Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要数组包含循环中12个月的所有12个键,即使找不到月_Php_Arrays_Foreach_Mysqli - Fatal编程技术网

Php 需要数组包含循环中12个月的所有12个键,即使找不到月

Php 需要数组包含循环中12个月的所有12个键,即使找不到月,php,arrays,foreach,mysqli,Php,Arrays,Foreach,Mysqli,我理解基本数组,但当它们变得更高级时,我就有点不知所措了。有人能帮我写下面的代码和数组吗 我正在将我的DB查询存储到数组中。如果所有12个月都不在数据库中,那么这就是存储的全部内容(应该如此)。但是,我的问题是我需要数组包含所有12个键,以便打印出来 // Example amounts 0, 0, 0, 0, 5.23, 0, 0, 158.35, 0, 0, 0, 0 基本上,如果它不存在,我应该仍然能够打印出该月的零 这是我的密码: $closedsales = mysqli_quer

我理解
基本数组
,但当它们变得更高级时,我就有点不知所措了。有人能帮我写下面的代码和数组吗

我正在将我的
DB查询
存储到
数组中
。如果所有12个月都不在数据库中,那么这就是存储的全部内容(应该如此)。但是,我的问题是我需要
数组
包含所有12个
,以便打印出来

// 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 />";
       }
$closedsales=mysqli_query($mysqli,“选择月(日期)作为月,选择sum(金额)作为销售总额,其中user_id=”,“$userid.”和status='S'按月分组(日期)”);
而($row=mysqli\u fetch\u assoc($closedsales)){
$monthlysales[$row['month']]=$row['total'];
}
foreach($key=>$amount的月销售额){
回显“$amount
”; }
  • 准备并
    array
    ,按键
    1-12
    0
    value
    表示没有销售的月份
  • 数组
    与具有销售额的月份合并到上面构建的空月份
  • 你得到了你需要的
  • 准备并
    array
    ,按键
    1-12
    0
    value
    表示没有销售的月份
  • 数组
    与具有销售额的月份合并到上面构建的空月份
  • 你得到了你需要的

预先填充结果数组:

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

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

预先填充结果数组:

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

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

当数组有数字键时,
array\u merge
将它们串联在一起,它不会合并相似的键。当数组有数字键时,
array\u merge
将它们串联在一起,它不会合并相似的键。^对于您的具体情况,这里的解决方案更简单。非常好,谢谢我会记住这个函数!!再次感谢你一直以来的帮助!!^更容易解决您的具体情况。非常好,谢谢!我会记住这个函数!!再次感谢你一直以来的帮助!!