PHP:有一个现有的2D数组,并希望从mySQL查询中添加另一列

时间:2016-07-20 18:18:34

标签: php mysql arrays

我想生成一个二维数组,当我添加多个SQL查询的结果时,该数组会扩展。根据我如何处理这个问题,我正在努力解决两个不同的问题。

初始查询

$query = "SELECT YEAR(`Date`) as Year, count(*) as Total FROM `t_Table` GROUP BY YEAR(`Date`)";
if ($result = $mysqli -> query($query)) {
    while($row = $result -> fetch_array()) {
        <some action to get these results into a 2-D array>
    }
    $result->close();
}

方法1:使用年份作为指数

以下内容适用于创建数组但使用数字索引:

$arr_result[] = array("Year" => $row["Year"], "Total" => $row["Total"]);

这会产生:

Array (
    [0] => Array ( [Year] => 2015 [Total] => 158322 )
    [1] => Array ( [Year] => 2016 [Total] => 47908 )
)

我需要做些什么才能使年成为指数?我试过这个但是它没有用:

$arr_result[$row["Year"]] = "TotApts" => $row["TotApts"]);

和此:

$arr_result[$row[0]]["TotApts"] => $row["TotApts"];

我错过了什么?

方法2:保持索引数字并为每行添加其他列

所以带上第二个查询,从数据库中提取年份和性别数,我确认一切都很好,如下:

while($row = $result -> fetch_array()) {
    printf("Year %s - Gender %s<br>", $row["Year"], $row["Gender"]);
}

这会产生

Year 2015 - Gender 91819
Year 2016 - Gender 27930

但我正在敲打我的脑袋,想知道如何将这些插入到$ arr_result中,以便我生成以下内容:

Array (
    [0] => Array ( [Year] => 2015 [Total] => 158322 [Gender] => 91819 )
    [1] => Array ( [Year] => 2016 [Total] => 47908 [Gender] => 27930 )
)

例如,我在许多其他(同样错误的)排列中尝试过:

$arr_result[][$row["Year"] = array("Gender" => $row["Gender"]);

如果使用了数字索引,我是否需要在fetch_array()while循环中循环遍历它们(从i = 0到x)并检查Year =查询年份,然后才更新值?这似乎有点不必要的复杂性。我确定有更简单的方法......

1 个答案:

答案 0 :(得分:0)

在第一种方法中尝试以下方法:

$arr_result[$row["Year"]]["TotApts"] = $row["TotApts"];

在第二种方法中,您可以这样做:

$arr_result[] = array( Year" => $row["Year"], "Total" => $row["TotApts"], "Gender" => $row["Gender"] )