我想做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()依次检查元素可能是更好的方法。
如果你在处理一个特定的案例,你总是期望有三个元素,那么你所做的就是好的。
如果$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"vshttp://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
}
如果这对你有用,请告诉我;)