我想发表if声明。如果一个数组$list[0]
,$list[1]
和$list[2]
不是空的,那么我就足够了,这样我就可以做到这些。
if(!empty($list[0]) AND !empty($list[1]) AND !empty($list[2])){
// do something
}else{
// output error and redirect
}
有没有其他方法可以缩短上述if语句?还是足够好?
把事情简单化。你可能以看似“更聪明”的方式做到这一点,但事实上它可能只会使代码更不易读。
如果您担心处理一般情况(任何长度的数组),那么依次检查元素的foreach()可能是更好的方法。
如果你正在处理一个你总是期望3个元素的特定情况,那么你正在做的事情很好。
是否有可能,如果$list[0]
为空,另外两个也是空的?例如使用fgetcsv导入时,就是这种情况。那么,一个条件就适合了。如果没有,那么我会说你做得对。
AFAIk你可以删除空,因为NULL在条件中被视为FALSE。
这是更简单的代码:
if(empty($list[0]) OR empty($list[1]) OR empty($list[2])){
// output error and redirect
EXIT;
}
// do something
当值为零时,请注意Empty也返回false。我们需要更多关于$ list即将提供更明智答案的信息。
isset(...)可以处理多个参数。 如果isset()和empty()在你的情况下可以互换(“确定变量是否设置且不是NULL”vs http://docs.php.net/manual/en/types.comparisons.php)你可以写
if ( isset($list[0], $list[1], $list[2]) ) {
...
您可能希望首先过滤掉您的数组,以消除空值,因为您可能无论如何都不想要它们
$list = array_filter($list);
然后检查您是否有足够的值
if (count($list) > 2)
你写的代码非常好,但是如果你正在寻找替代方案......你可以做类似的事情:
$none_empty = true;
foreach($list as $array) {
if(empty($array)) {
$none_empty = false;
break;
}
}
if($none_empty) {
// do something
}else{
// output error and redirect
}
如果这对您有用,请告诉我;)