PHP 的逻辑运算符可以像 JavaScript 一样工作吗?
我最喜欢 JavaScript 的一件事是逻辑运算符非常强大:
&&
可以用来安全地提取对象字段的值,并且会返回 null如果对象或字段尚未初始化// 如果 param、param.object 或 param.object.field 返回 null // 尚未设置 字段=参数&& param.object &&参数.对象.字段;
||
可用于设置默认值:// 将参数设置为其默认值 参数 = 参数 ||默认值;
PHP 是否也允许使用逻辑运算符?
One of the things I like the most of JavaScript is that the logical operators are very powerful:
&&
can be used to safely extract the value of an object's field, and will return null if either the object or the field has not been initialized// returns null if param, param.object or param.object.field // have not been set field = param && param.object && param.object.field;
||
can be used to set default values:// set param to its default value param = param || defaultValue;
Does PHP allow this use of the logical operators as well?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
PHP 返回
true
或false
。但你可以模拟 JavaScript 的r = a ||乙|| c
with:关于“ands”,类似:
PHP returns
true
orfalse
. But you can emulate JavaScript'sr = a || b || c
with:Regarding 'ands', something like:
PHP 逻辑运算符不会返回任何一边的值:它们总是会为您返回一个布尔值。
例如,执行:
将始终使
$result
包含布尔值:true
或false
——而绝不会$a
> 也不是$b
。PHP logical operators do not return the value on any of their sides : they will always get you a boolean.
For instance, doing :
Will always make
$result
contain a boolean :true
orfalse
-- and never$a
nor$b
.您可以使用三元运算符。
You can set up similar functionality using ternary operators.
修订:
关于 PHP 中的逻辑 AND 以获得与 JavaScript 相同的结果,您可以使用传统三元的变体,如下所示:
请参阅 实时代码
“Elvis”运算符“?:”仅在条件表达式为 false 时才将结果分配给 $field。因此,如果 $param 以及 $param->object 都存在,那么您必须使用 NOT 运算符(“!”)才能获得所需的结果。
您还可以通过利用 PHP 7 中的空合并运算符(“??”)与
get_object_vars()
配合使用来实现无需 AND 运算即可获取字段数据的目标。Revised:
With respect to logical ANDing in PHP to achieve the same kind of result as JavaScript, you could use a variant of the traditional ternary, as follows:
See live code
The "Elvis" operator "?:" only assigns the result to $field if the conditional expression is false. So, if $param exists as well as $param->object, then you have to use the NOT operator ("!") in order to get the desired result.
You may also accomplish the objective of getting the field data without ANDing by utilizing the null coalescing operator ("??") in PHP 7 in tandem with
get_object_vars()
.