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

时间:2012-01-18 12:34:35

标签: php if-statement

我想发表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语句吗?还是足够好?

8 个答案:

答案 0 :(得分:6)

保持简单。你可能会以看似“更聪明”的方式做到这一点,但事实上它可能只会使代码的可读性降低。

答案 1 :(得分:2)

如果您担心处理一般情况(任何长度的数组),那么依次检查元素的foreach()可能是更好的方法。

如果你正在处理一个你总是期望3个元素的特定情况,那么你正在做的事情很好。

答案 2 :(得分:0)

是否有可能,如果$list[0]为空,其他两个也是空的?例如使用fgetcsv导入时,就是这种情况。那么,一个条件就适合了。如果没有,那么我会说你做得对。

AFAIk你可以删除空,因为NULL在条件中被视为FALSE。

答案 3 :(得分:0)

这是更简单的代码:

if(empty($list[0]) OR empty($list[1]) OR empty($list[2])){
// output error and redirect 
EXIT;
}

// do something

答案 4 :(得分:0)

请注意,当值为零时,Empty也会返回false。 我们需要更多关于$ list即将提供更明智答案的信息。

答案 5 :(得分:0)

isset(...)可以处理多个参数 如果 isset()和empty()在您的情况下是可互换的(“确定变量是否设置且不是NULL”vs http://docs.php.net/manual/en/types.comparisons.php),您可以写

if ( isset($list[0], $list[1], $list[2]) ) {
  ...

答案 6 :(得分:0)

您可能希望首先过滤掉您的数组,以消除空值,因为您可能无论如何都不想要它们

$list = array_filter($list);

然后检查您是否有足够的值

if (count($list) > 2)

答案 7 :(得分:-1)

你写的代码非常好,但是如果你正在寻找替代方案......你可以做类似的事情:

$none_empty = true;

foreach($list as $array) {
   if(empty($array)) {
    $none_empty = false;
    break;
   }
}

if($none_empty) {
// do something
}else{
// output error and redirect
}

请告诉我这是否适合您;)