0

わかりますbasic arraysが、彼らがより高度になると、少し迷子になります。誰かが次のコードで私を助けることができますかarray?

に保存DB queryしていarrayます。12 か月すべてが DB にない場合は、それがすべて格納されます (当然のことです)。ただし、私の問題は、これを印刷できるようにarray12 個すべてが必要なことです。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 />";
       }
4

2 に答える 2

2

結果配列を事前に入力します。

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

次に、要素をテーブルの行に置き換えるループを実行します。テーブルから行が欠落している場合、初期値は 0 になります。

于 2013-07-05T17:59:23.677 に答える
1
$allmonthlysales = array_fill_keys(range(1, 12), 0);
foreach($monthlysales as $month => $sales){
    $allmonthlysales[$month] = $sales;
}
var_dump($allmonthlysales);
  • 販売のない月を意味するようにarray、キー1-12を準備してください。0value
  • array上記で構築された空の月と売上のある月をマージします。
  • そして、あなたは必要なものを手に入れました...
于 2013-07-05T17:55:59.017 に答える