给定一个空数组$items = array();
为什么我要使用以下代码(我以前见过):
if (count($items) > 0) {
foreach ($items as $item) // do stuff here
}
而不仅仅是
foreach ($items as $item) // do stuff here
如果count($items) === 0
循环不会执行?
答案 0 :(得分:1)
您通常不需要进行检查。我看到很多带有该检查的代码,但它通常是不必要的,我认为这通常是由于程序员的无知。我经常看到的类似模式是在数据库查询之后:
if (mysqli_num_rows($stmt) > 0) {
while ($row = mysqli_fetch_assoc($stmt)) {
...
}
}
这个测试也是不必要的;如果没有找到行,则第一次提取将返回false
,循环将停止。
唯一有用的情况是,如果您想告诉用户没有结果,而不是只显示一个空表。所以你可以这样做:
if (count($items) > 0) {
echo "<table>";
foreach ($items as $item) {
// display table row
}
echo "</table>";
} else {
echo "<b>No data found!</b>";
}
答案 1 :(得分:1)
这实际上取决于你想做什么。正如评论所指出的那样,您可能希望将一个空数组作为特殊情况,因此您希望以不同方式处理该情况。否则,如果在空数组上执行warning
,则不会抛出foreach
,您将无法获得任何结果。您应该执行的典型检查是,$items
是一个数组,或者将$items
转换为数组,以避免获得warning
。如果你这样做,$items
通常会转换为一个值的数组,即该值$items
。
e.g。
$items = 2;
foreach((array)$items as $item) {
print $item; //will print 2 alright
}
或
if(is_array($items)) {
foreach($items as $item) {
print $item;
}
}
else {
// do something here
}