2017-05-16 18 views
0

我有一個變量數組如下:
$shippingtimearr = array("", "1630", "1530", "1530", "1530", "", "");

此數組中的每個字段表示一個工作日。
我需要確定有多少連續字段是空的,具體取決於一天(「開始字段」)。

例如:
如果開頭是$shippingtimearr[5],它應該返回3,因爲下一個「星期一」($shippingtimearr[0])是NULL
如果開始的數組值不是NULL,則應返回0;確定數組中有多少個連續字段爲空

我試圖建立一個「爲」像這樣的循環:

for($i = 2; $shippingtimearr[$i] = 0; $i++) { 
      $counter++; 
     } 

但它沒有工作,顯然,這不會考慮這樣一個事實:「周」應再次循環,看看下週首日是「NULL」。

+0

「連續性」的意思是「一個接一個」..我認爲你只需要總數 –

+0

你提到的值真的是NULL還是空字符串'「」'? –

+0

這是一個好的開始,但要小心,'for'循環的第二部分是一個條件(它應該是'=='而不是'=')。遵循你的想法,你可以在循環中操作'$ i'的值來達到你想要的,只要確保在所有情況下都跳出循環 – Kaddath

回答

0

因爲似乎沒有人明白正是我一直在尋找,我會發佈一個解決方案,我使用「while」循環提出自己:

$counter = 0; 
$shippingtimearr = ["", "1630", "1530", "1530", "1530", "", ""]; 
$start = 3; 

while ($shippingtimearr[$start++] == NULL) { 
    ++$counter; 
    if ($start > 6) $start = 0; 
} 
0
$shippingtimearr = array("", "1630", "1530", "1530", "1530", "", ""); 
$contains_empty = count($shippingtimearr) - count(array_filter($shippingtimearr)); 
0

可能是你正在尋找一些簡單的答案就像

<?php 
$shippingtimearr = array("", "1630", "1530", "1530", "1530", "", ""); 
$counter = 0; 
for($i=0;$i<count($shippingtimearr);$i++){ 
    if($shippingtimearr[$i]=="") 
     $counter++; 
} 
echo $counter; 
?> 
0

您可以使用array_count_values(),check the live demo

<?php 

$shippingtimearr = array("", "1630", "1530", "1530", "1530", "", ""); 
print_r(array_count_values($shippingtimearr)['']); 
相關問題