需要数组包含循环12个月的所有12个键,即使找不到月份也是如此

时间:2013-07-05 17:53:44

标签: php arrays foreach mysqli

我理解basic arrays但是当他们变得更高级时,我会有点失落。有人可以帮助我使用以下代码和array吗?

我将DB query存储到array。如果所有12个月都不在数据库中那么就是存储的所有内容(应该如此)。但是,我的问题是我需要array才能拥有所有12 keys所以我可以打印出来。

// Example amounts

0, 0, 0, 0, 5.23, 0, 0, 158.35, 0, 0, 0, 0

基本上如果它不存在,我仍然可以在那个月打印出零。

这是我的代码:

$closedsales = mysqli_query($mysqli, "SELECT MONTH(date) as month, sum(amount) as total FROM sales WHERE user_id = '".$userid."' AND status = 'S' GROUP BY MONTH(date)");

    while ( $row = mysqli_fetch_assoc($closedsales) ) {
    $monthlysales[$row['month']] = $row['total'];
    }

       foreach($monthlysales as $key => $amount) {
         echo "$amount <br />";
       }

2 个答案:

答案 0 :(得分:2)

预填充结果数组:

$monthlysales = array_fill_keys(range(1, 12), 0);

然后运行你的循环,它将用表中的行替换元素。如果表中缺少一行,则它将具有初始值0。

答案 1 :(得分:1)

$allmonthlysales = array_fill_keys(range(1, 12), 0);
foreach($monthlysales as $month => $sales){
    $allmonthlysales[$month] = $sales;
}
var_dump($allmonthlysales);
  • 使用array1-12作为0准备和value,意味着没有销售的几个月。
  • array合并为具有销售额的月份与上面构建的空白月份。
  • 你得到了你需要的......