2017-05-16 4 views
0

次のような変数を持つ配列があります。
$shippingtimearr = array("", "1630", "1530", "1530", "1530", "", "");

この配列の各フィールドは曜日を表します。
1日に応じて空白が連続するフィールドの数(「開始フィールド」)を決定する必要があります。

たとえば、
開始が$shippingtimearr[5]の場合は、次の「Monday」($shippingtimearr[0])がNULLであるため、3を返します。
開始値がNULLでない配列値の場合は、0を返します。アレイ内の連続するフィールドの空数を確認する

は、私が作成してみました。このようなループ「のため」:

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

しかし、それは動作しませんでしたし、明らかに、これは「週」かどうかを確認するために、再びループしなければならないという事実を考慮しています来週の最初の日は「NULL」です。

+0

「逐次的」とは、「次々と」を意味します。総数が必要なだけです。 –

+0

あなたが言った値は本当に 'NULL'ですか、それとも空の文字列' ""ですか? –

+0

これは良い始まりですが、 'for'ループの2番目の部分は条件です(' = 'ではなく' == 'でなければなりません)。あなたのアイデアに従えば、あなたはあなたが望むものを達成するためにループの '$ 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)['']); 
関連する問題