0

我做了一些研究,但我还没有找到我的问题的直接答案。

在循环之前进行计数是一种好方法吗?

这样做更好吗:

if(count(array) > 0){
    foreach(array as entry){

    }
}

或者

foreach(array as entry){

}

从我的角度来看,计数是一个额外的步骤,因为如果数组为空,我们将不会循环。

你怎么看待这件事 ?

4

3 回答 3

4

如果数组中没有任何内容,则 foreach 循环将循环 0 次。检查前面的计数是不必要的。根据 $array 的可能值,您可能会更好地测试 is_array() 因为如果 $array 不是数组,foreach 将引发错误。

于 2013-03-26T18:03:55.313 回答
1

让我们尝试一些简单的测试;

测试 1

$array = "string";
foreach ( $array as $entry ) {
}

输出

Warning: Invalid argument supplied for foreach()

测试 2

$array = "string";
if (count($array) > 0) {
    foreach ( $array as $entry ) {
    }
}

输出

Warning: Invalid argument supplied for foreach()

测试 3

$array = "string";
if (is_array($array) || $array instanceof Traversable) {
    foreach ( $array as $entry ) {
    }
}

输出

 No error

您不必一直验证......但是当您不确定该值时......您应该在循环之前检查它是否有效。

于 2013-03-26T19:27:27.723 回答
0

如果你去,count()它类似于做is_array(). 如果它不是数组,Foreach 会给你一个错误。

一个更好的方法,imo,是if(!empty($array)){

于 2013-03-26T18:04:26.013 回答