我想生成一个二维数组,当我添加多个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 =查询年份,然后才更新值?这似乎有点不必要的复杂性。我确定有更简单的方法......
答案 0 :(得分:0)
在第一种方法中尝试以下方法:
$arr_result[$row["Year"]]["TotApts"] = $row["TotApts"];
在第二种方法中,您可以这样做:
$arr_result[] = array( Year" => $row["Year"], "Total" => $row["TotApts"], "Gender" => $row["Gender"] )