【问题标题】:In php, how do logical operators work _with non-booleans_?在 php 中,逻辑运算符如何与非布尔值一起使用?
【发布时间】:2010-11-11 05:08:12
【问题描述】:

在其他编程语言(Python、Ruby、Scheme)中,我习惯做类似的事情

$foo = $cat && $dog;
$bar = $fruit || $vegetable;

如果 $cat 为空,我希望 $foo 将分配给 $dog,如果 $fruit 不为空,则将 $bar 分配给 $fruit。我似乎记得因为在 PHP 中做这样的事情而被烧死,而且我从来没有确切地了解逻辑运算符如何处理非布尔操作数。有人可以解释或指出我正确的方向吗?我尝试阅读官方文档中的以下页面,但它不处理非布尔值:

http://us3.php.net/manual/en/language.operators.logical.php

【问题讨论】:

标签: php logical-operators


【解决方案1】:

在 PHP 中,布尔比较的结果始终是布尔值,操作数被强制为布尔值。

http://us3.php.net/manual/en/language.types.boolean.php

解释哪些值在被强制时会变为真或假。

【讨论】:

  • 谢谢,tialaramex。可以公平地说我的第一个示例相当于 $foo = ((boolean) $cat) && ((boolean) dog) 吗?
  • 我相信这是一个准确的描述,但我没有对它进行广泛的测试,所以我不能保证没有任何问题。
  • 它在哪里说逻辑运算表达式总是计算为布尔值?
【解决方案2】:

这对你有用吗?

$foo = $cat ? $cat : $dog;

第一个 $cat 将根据已知规则转换为布尔值。如果它是真的,那么 $foo 将是 $cat 否则它就是 $dog。

【讨论】:

  • @allyourcode 然后寻找所谓的“猫王算子”。
猜你喜欢
  • 1970-01-01
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
  • 2014-05-10
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
相关资源
最近更新 更多