【问题标题】:Check what part of an IF statement is false/true when using logical operators使用逻辑运算符时检查 IF 语句的哪一部分是假/真
【发布时间】:2020-11-04 23:59:46
【问题描述】:

有没有办法检查 if 语句的哪一部分是 flase/true?

例如,我有两个变量 $a 和 $b。如果其中任何一个是空的,我想停止我的功能,但我还想为每个功能回显一条特定的消息。我的代码是:

if(empty($a) || empty($b)){
  if(empty($a)){echo('$a is empty');}
  if(empty($b)){echo ('$b is empty');}
  return;
}

实际上,我还有更多变量,这只是一个简化。我想知道是否有办法避免双重 if 检查和清理代码。 谢谢

【问题讨论】:

  • 可以使用变量变量...将变量的名称放入一个数组中,然后循环遍历它们,并分别检查每个变量。

标签: php if-statement logical-operators


【解决方案1】:

没有什么好办法。在您描述的情况下,PHP 不会评估括号中的所有内容。

如果empty($a) 为真,php 将不会计算empty($b)。因为 OR 无论如何都是真的。

你可以做以下测试:

$a = 1; $b = 0;
if($a || $c) print "2";

这应该是显示 PHP Notice: Undefined variable: c.. 但它打印 2

最好分开评估

try{
    if(empty($a)) throw new \Exception('$a is empty');
    if(empty($b)) throw new \Exception('$b is empty');
} catch (\Exception $e) {
    print($e->getMessage());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多