有没有办法不用!在PHP中清空三次


Is there any way not to use !empty three times in PHP?

我想做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
}

如果这对你有用,请告诉我;)