php - 使用逻辑运算符时检查 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 检查和清理代码。谢谢
解决方案
没有什么好办法。在您描述的情况下,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());
}
推荐阅读
- java - 在 BigTable 数据库中存储 Lucene 索引
- regex - 将检查一列单元格并说出他是否找到确切单词的公式
- sql - 如何取一组最小的日期?
- pandas - 如何在课堂上使用 Pandas UDF
- machine-learning - 如何使用机器学习来检测一个简单的对象
- list - Retrieving data from Firebase (Realtime Database) into a list (Kotlin)
- ios - SwiftUI:导航栏显示第一个列表项的标题,否则显示“返回”
- ansible - 如何对列表进行循环并使用“何时”条件
- .net-core - 在也使用 netstandard2.1 的项目中升级到 .NET Core 3 并未在 Rider 中构建
- excel - 用于 Power Query 的 Excel 保护数据源