2017-04-25 59 views
0

我堅持。我不明白以下行爲:計數陣列導致意外的行爲

$qtest= 3; 
$testarray[0] = array(); 
$testarray[1] = array(); 
$testarray[2][0] = 0; 
print_r($testarray);echo "<br>"; 

for ($s = 0; $s < $qtest; $s++){ 
    if (count($testarray[$s] > 0)){ 
     echo count($testarray[$s]); echo "<br>"; 
     break; 
    } 
} 

我希望只看到結果:

Array ([0] => Array () [1] => Array () [2] => Array ([0] => 0)) 
1 

但結果是:

Array ([0] => Array () [1] => Array () [2] => Array ([0] => 0)) 
0 

爲什麼我在1代替收到0 ?????? 真的在幫忙! 感謝

+3

什麼是'$ outfeedwork'? – AbraCadaver

+2

檢查行'if(count($ testarray [$ s])> 0){''錯誤的位置'(' – Kohull

+0

下一次創建一個*最小*示例,並且該錯誤將變得明顯 –

回答

0

您在if子句中將條件設置爲在比較後錯誤地放置括號。

$qtest= 3; 
$testarray[0] = array(); 
$testarray[1] = array(); 
$testarray[2][0] = 0; 
print_r($testarray);echo "<br>"; 

for ($s = 0; $s < $qtest; $s++){ 
    if (count($testarray[$s]) > 0){ 
     echo count($testarray[$s]); echo "<br>"; 
     break; 
    } 
} 
+0

真的很感激....讓我永遠......謝謝! – Pine

1

在你與0 比較數組,如果你比較空數組以0作爲比較,

$arr = [] 
$arr > 0 #true 

,它將返回true,這是這裏發生了什麼事

您應該檢查count($testarray[$s]) > 0

這裏是校正代碼

$qtest= 3; 
$testarray[0] = array(); 
$testarray[1] = array(); 
$testarray[2][0] = 0; 
print_r($testarray);echo "<br>"; 

for ($s = 0; $s < $qtest; $s++){ 
    if (count($testarray[$s]) > 0){ 
     echo count($testarray[$s]); echo "<br>"; 
     break; 
    } 
} 
+0

真的很感激....我永遠把我帶到了......謝謝! – Pine

+0

@Pine能否請你接受一個答案 –