0

在某些情况下,当空值不是问题时,我不会检查变量。

例如:

$fruits = array("apple","banana");
    foreach ($fruits as $a) {
    $res .= ", $a";
}

echo "This are the fruits you like: ".$res;

现在,如果 $fruits 恰好是空的,这不是问题,只是列表将是空的(我知道这不是很优雅,我可以使用条件语句将答案更改为“你不喜欢任何水果” ,但这只是一个例子!)。

我只是想知道通常检查数组是否为空更有效。简而言之,从性能的角度来看这是更好还是没有任何实际区别:

if (!empty($fruits)) foreach()... and so on

谢谢,亲切的问候

4

6 回答 6

7

任何性能提升都可以忽略不计。这称为微优化。专注于编写好的代码,不要担心微优化。

我会去做这样的事情:

if(!empty($fruit) && is_array($fruit)){
    echo "This are the fruits you like: " . implode(", ", $fruit);
}
于 2012-11-09T16:22:14.510 回答
1

好吧,这取决于填充数组的内容。例如,如果是用户输入,您可能需要确保它不为空,否则,如果不需要,则不要。这绝对是逐案的。

另外,使用 empty(); 时要小心。如果值为 0,那么即使存在值,它也会返回 true。您可以使用 strlen() 来解决这个问题:)

于 2012-11-09T16:21:29.823 回答
1
echo is_array($array) ? implode(', ', $array) : false;

单线解决方案..

或者你可以使用,计数。

例如:count($array) > 0 ....

于 2012-11-09T16:30:32.073 回答
0

您还可以使用isset()它来检查变量的值是否为 0 或其他值。

于 2012-11-09T16:23:19.513 回答
0

您想检查数组$fruits是否为空,然后implode按照韦恩的建议使用。

  if(!empty($fruits)){
   echo "This are the fruits you like: " . implode(", ", $fruits);
 }

is_array不是真的有必要,如果您已经像$fruits = array();这些行之前那样初始化了数组。

于 2012-11-09T16:24:55.450 回答
0

那么在这种情况下,我认为这不会有很大的不同。但是,如果它是空的 $res 将永远不会被声明,这可能会导致错误并且错误总是不好的。

于 2012-11-09T16:25:08.693 回答