php - 如何从此查询创建多维数组

标签 php mysql arrays multidimensional-array

查询:

SELECT
    c.id campaign_id,
    c.campaign_title,
    c.start_date campaign_start_date,
    c.end_date campaign_end_date,
    cat.id category_id,
    cat.category_title,
    n.id nominee_id,
    n.title nominee_title,
    u.id voter_id,
    u.fullname voter_name
FROM
    campaign c
LEFT JOIN categories cat ON cat.campaign_id = c.id
LEFT JOIN category_nominees cn ON cn.category_id = cat.id
LEFT JOIN nominees n ON n.id = cn.nominee_id
LEFT JOIN category_votes cv ON cv.campaign_id = c.id
AND cv.category_id = cat.id
AND cv.nominee_id = n.id
LEFT JOIN users u on u.id = cv.user_id
WHERE
    c.active = 1
ORDER BY
    u.fullname,
    c.campaign_title,
    cat.category_order,
    cat.category_title,
    cn.nominee_order,
    n.title

通过该查询,我将使用 PHP 在逻辑上将所有数据存储在嵌套关联数组中,然后每当您循环数据或需要引用数据时,您将引用数组指针,而不是每次都执行新查询。

例如: $campaigns[$campaign_id]['categories'][$category_id]['nominees'][$nominee_id]['title'] 是一种可能的方法。

我已经尝试过

$rows = [];
while($row = mysqli_fetch_array($query))
{
    if (!isset($rows[$row['campaign_id']])) {
        $rows[$row['campaign_id']] = array(
            'campaign_id' => $row['campaign_id'],
            'category_id' => array()
        );
    }

    array_push ($rows[$row['campaign_id']]['category_id'],array(
        'category_id' => $row['category_title'],
        'nominees_id' => $row['nominee_id']
    ));

}

我想不通。任何帮助将不胜感激!

最佳答案

$campaigns = array(); while($row = mysqli_fetch_array($query)) {
    $campaign_id = $row['campaign_id'];
    $category_id = $row['category_id'];
    $nominee_id = $row['nominee_id'];
    $campaigns[$campaign_id]['categories'][$category_id]['nominees'][$nominee_id]['title']
= $row; }

关于php - 如何从此查询创建多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28201783/

相关文章:

服务器上传后 JavaScript 不工作

javascript - 尝试将数字增加给定值

javascript - 代码建议 - 如何使代码更简洁 (Javascript/Jquery)

php - PHP 脚本在后台运行时 HTML 未加载

PHP 将日期时间发送到 mysql

java - 如何使用 selenium java 自动化 PHP-Flash Web 应用程序

mysql - 如何在 sql 中的 Left Join 中仅显示表的左侧部分(不是相交部分)?

java - 如何在XML中存储和访问大量且经常使用的数据?

javascript - 通过 Ajax 将值传递给 php 脚本

python - Numpy 数组中的宾果游戏