我试图缩短我的代码,所以我来缩短以下类型的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循环,但这需要大量的代码更改。 也许有人可以指出我正确的方向。
提前致谢:)
延
答案 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是空的
答案 3 :(得分:1)
<?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)
,compact
和array_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