【发布时间】:2012-07-03 13:01:51
【问题描述】:
在任何“正常”的编程语言中,从 C 到 Javascript,如果 a 为真,则表达式如 a || b(或 a or b)计算为 a,否则计算为 b,这使得事情成为可能像 a = params.a || default_a 和 and 运算符类似,但 PHP 要求有所不同。
有什么办法可以在 PHP 中实现这一点吗?或者是否有任何 PHP 程序员使用的“编码习惯用法/模式”来代替下面的代码?
$a = $my_a || $default_a; // nope, $a gets a boolean
因为写if ($my_a) $a = $my_a; else $a = $default_a; 或$a = $my_a ? $my_a : $default_a; 对我来说看起来很丑陋,并且通过让我重复$my_a 之类的内容而违反了代码的基本“干性”,这也可能是一个非常长而复杂的表达式。
我知道,这是一件小事,在double clawed hammer 的土地上并不那么奇怪,但它真的让我很恼火!
【问题讨论】:
-
你只是在抱怨php吗?逻辑运算符在 php 中的工作方式与在其他任何地方一样。更好的是,只需使用三元运算符php.net/manual/en/language.operators.comparison.php
-
@MikeS。我真的不知道下面答案中解释的三元运算符的“默认”行为
标签: php design-patterns logical-operators idioms