【问题标题】:Why does the PHP code function differently than the Python code?为什么 PHP 代码的功能与 Python 代码不同?
【发布时间】:2017-10-19 14:19:01
【问题描述】:

PHP 程序

$x = (False or 123)
echo $x

python 代码

x= (False or 123)
print(x)

在 php 中的答案是 1,在 python 中的答案是 123

这是为什么呢?

【问题讨论】:

  • 在 PHP 中,如果 False123 等于 true,则 $x 将是布尔值 true,如果它们都是 false,则为 false....False 是 False,但 123通过松散输入等同于 True,因此 $x 将是布尔值 true.... 并回显布尔值 true 显示为 1...。如果您改为使用 var_dumped,您会将其视为布尔值 true
  • python呢??

标签: php python computer-science


【解决方案1】:

Python andor 执行返回最后一个值的“McCarthy 评估”,请参阅 https://stackoverflow.com/a/22598675/196206Wikipedia

PHP 也会进行短路评估,但始终只返回一个布尔值:http://php.net/manual/en/language.operators.logical.php

【讨论】:

  • 感谢您的回答,但我对两个代码段返回的结果感兴趣,正在寻找结果背后的原因。
【解决方案2】:

PHP:$x =(错误或 123)。假为假(!),123 为真,假或真 == 真,所以 $x 为真(或打印时为 1。

Python:先做 or 操作,然后将结果赋值给 x。 int(False) 是 0,int(123) 是 123,所以它得到 123。在 Python 中,有一个技巧是 or 返回值是使其为真的值,而不是布尔结果。请参阅此页面: http://www.diveintopython.net/power_of_introspection/and_or.html

【讨论】:

  • 我不想告诉你这个,但是$x = (False or 123)...看看那些括号!
  • 非常感谢的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-23
相关资源
最近更新 更多