2013-07-05 32 views
0

我明白basic arrays但是當它們變得更高級時,我會有點迷路。有人可以幫我用下面的代碼和array需要數組包含在循環中的12個月的所有12個鍵,即使月沒有找到

我將我的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

預填你的結果數組:

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

然後運行你的循環,這將取代從表中的行中的元素。如果表中缺少一行,它將具有初始值0。

+0

^在這裏,您的確切案例更容易的解決方案。 – CodeAngry

+0

非常好,謝謝!我會記得那個功能!再次感謝您始終保持樂於助人! – Chris78

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與上面構建的空白銷售月份合併。
  • 而你得到你所需要的...
+1

當數組有數字鍵時,'array_merge'連接它們,它不合並相似的鍵。 – Barmar

+0

@Barmar ** TRUE!**這是我的蹩腳...... – CodeAngry