我的代码设置如下:
if ($arr) {
foreach ($arr as $a) {
// Code stuffs
}
}
如果$arr
不存在,那丝毫没关系,所以我很想使用每个人最喜欢的抑制器(@
)而不是用if if语句来破坏我的代码
答案 0 :(得分:6)
我建议采用另一种方法,这种方法是在学年期间通过我的C ++和Java形成的。
如果您有疑问,请初始化变量,如果它便宜则可以。
例如,在您的情况下,我将进行以下
//early on, *before any other possible use of $arr*!
$arr = array();
//do something else, remake $arr or not, whatever!
foreach ($arr as $a) {
// Code stuffs
}
正确,简单,易读且易于理解。如果您之前没有初始化$ arr,您可能想知道它出生的地方......特别是在您关闭此项目并需要一些调试后的6个月之后!
答案 1 :(得分:2)
你总是可以做一个“速记”功能
function checkArr($arr){
return isset($arr) ? ((count($arr) > 0) ? $arr : array()) : array();
}
foreach(checkArr($arr) as $a){
echo $a;
}
我的2¢。
答案 2 :(得分:0)
使用:
if ((!isset($arr)) || (!is_array($arr)) $arr = array();
foreach ($arr as $a)
{
// Code stuffs
}
我知道,if
仍在那里,但你没有完整的循环
答案 3 :(得分:-1)
你可以这样写:
foreach((array)$arr as $a) {
// ...
}
将未定义的变量转换为数组将生成一个空数组。当$ arr值是boolean的类型,即false时,这将不起作用。