在多个if语句中检测哪个条件为false

时间:2016-04-27 13:25:14

标签: php if-statement

我试图缩短我的代码,所以我来缩短以下类型的if语句:

// a,b,c,d needed to run
if ( empty(a) ) {
    echo 'a is empty';
} elseif ( empty(b) ) {
    echo 'b is empty';
} elseif ( empty(c) ) {
    echo 'c is empty';
} elseif ( empty(d) ) {
    echo 'd is empty';
} else {
  // run code with a,b,c,d
}

有没有办法检测哪一个条件是假的(是emtpy)?

if ( empty(a) || empty(b) || empty (c) || empty(d) ) {
     echo *statement n*.' is empty';
} else {
  // run code with a,b,c,d
}

我考虑过for循环,但这需要大量的代码更改。 也许有人可以指出我正确的方向。

提前致谢:)

5 个答案:

答案 0 :(得分:4)

您可以为每个条件设置一个变量并输出

if ( (($t = 'a') && empty($a)) || (($t = 'b') && empty($b)) || (($t = 'c') && empty($c)) || (($t = 'd') && empty($d)) ) {
     echo "{$t} is empty";
} else {
  // run code with a,b,c,d
}

赋值($t='a|b|c|d')将始终为true,并且testet var为空,因为条件为true && false,条件将失败

但就可读性而言,我宁愿选择任何其他答案。

答案 1 :(得分:1)

对于这种情况,我建议您使用开关,这是更优化的方式,如下所示:

$empty = "";
switch ($empty) {
    case $a:
        echo "a is empty"
        break;
    case $b:
        echo "b is empty"
        break;
    case $c:
        echo "c is empty"
        break;
    default:
        echo "nothing is empty";
}

答案 2 :(得分:1)

就个人而言,我可能会使用variable variable。但这只是因为我喜欢它们,有些不喜欢它们

// the variables somewhere else in your code
$a = 1;
$b = null;
$c = '';
$d = 4;


// do your check
$arr = ['a','b','c','d']; // the names of the variables you want to check

foreach($arr as $var) {
    if(empty($$var)) {
        echo $var . ' is empty'.PHP_EOL;
    }
}

将输出

  

b是空的   c是空的

example

答案 3 :(得分:1)

使用array_search()

<?php 
$arr = array('a'=>1,'b'=>2,'c'=>null,'d'=>4); //make an array of variables
echo "Null variable : ".array_search(null, $arr); // check for null item
?>

这将输出:

Null variable : c

答案 4 :(得分:1)

使用import org.apache.spark.graphx._ import org.apache.spark.graphx.lib._ val graph = GraphLoader.edgeListFile(sc, "input.graph").cache() ConnectedComponents.run(graph) compactarray_filter

array_diff

通过这种方式,在$arr = compact( 'a', 'b', 'c', 'd' ); if( count( $empty = array_diff( $arr, array_filter( $arr ) ) ) ) { echo key( $empty ) . ' is empty'; } else { echo 'OK'; } 中,您拥有所有空值。因此,您可以回显所有键的警告:

$empty