计数数组会导致意外行为

时间:2017-04-25 15:04:33

标签: php

我被困了..我不明白以下行为:

$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

为什么我收到0而不是1 ?????? 真的应该帮忙! 感谢

2 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分: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;
    }
}