首页 > 解决方案 > 使用逻辑运算符时检查 IF 语句的哪一部分是假/真

问题描述

有没有办法检查 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 检查和清理代码。谢谢

标签: phpif-statementlogical-operators

解决方案


没有什么好办法。在您描述的情况下,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());
}

推荐阅读