2013-08-12 69 views
0

我有以下陣列替換非零值

Array 
(
    [2013-08-12] => Array 
     (
      [count] => 0 
     ) 

    [2013-08-11] => Array 
     (
      [count] => 5 
     ) 

    [2013-08-10] => Array 
     (
      [count] => 0 
     ) 

    [2013-08-09] => Array 
     (
      [count] =>3 
     ) 
    [2013-08-08] => Array 
     (
      [count] =>0 
     ) 
    [2013-08-07] => Array 
     (
      [count] =>0 
     ) 
) 

現在,這實際上是一個運行總計。所以在我的視圖文件中,我需要以這樣的方式顯示計數,即它應該顯示非零值(如果可用),否則顯示爲零。

在這種情況下,計數從2013-08-08開始,因此可以在它之前的日期顯示0。但是在它之後的日期,如果日期沒有計數,它需要顯示以前的計數。

因此,對於2013-08-10,它需要顯示計數爲3和12應該是。這是一些用戶註冊的總數,因此如果某個日期的計數爲零,則需要顯示截至該日期的總數。我怎樣才能做到這一點 ?

+0

您是否嘗試過這個自己解決?請張貼一些代碼。 –

回答

0

這是非常基本的:

通過你的陣列就循環,增加計數值運行總和,並顯示運行總計:

$runningTotal = 0; 
foreach($myArray as $key => $value) { 
    echo $key, ' => '; 
    $runningTotal += $value['count']; 
    echo $runningTotal, PHP_EOL; 
} 

但要確保你的陣列是爲了第一

ksort($myArray); 

編輯

基於您的評論:

$runningTotal = 0; 
foreach($myArray as $key => $value) { 
    echo $key, ' => '; 
    $runningTotal += $value['count']; 
    echo ($value['count'] > 0) ? $value['count'] : $runningTotal; 
    echo PHP_EOL; 
} 

編輯#2

基於後續的評論:

$runningTotal = 0; 
foreach($myArray as $key => $value) { 
    echo $key, ' => '; 
    $runningTotal = ($value['count'] > 0) ? $value['count'] : $runningTotal; 
    echo $runningTotal, PHP_EOL; 
} 
+0

但是$ value ['count']實際上是從數據庫中提取的總數,所以添加它會給出錯誤的結果。例如:這會給count 8後的8作爲計數,但它必須是5本身。 –

+0

所以你期望看到'2013-08-07 0; 2013-08-08 0; 2013-08-09 3; 2013-08-10 3; 2013-08-11 5; 2013-08-12 8;'?請參閱編輯...雖然很難相信count是從您的數據中獲得的總計,但它顯示第3天下降到0時......除非3個人已刪除他們的帳戶 –

+0

實際上我需要2013-08-07 0 ; 2013-08-08 0; 2013-08-09 3; 2013-08-10 3; 2013-08-11 5; 2013-08-12 5; –