PHP 中的 == 运算符具有传递性吗?

发布于 2024-10-13 06:31:36 字数 170 浏览 2 评论 0原文

在 JavaScript 中,== 运算符不一定具有传递性:

js> '0' == 0
true
js> 0 == ''
true
js> '0' == ''
false

在 PHP 中也是如此吗?你能举个例子吗?

In JavaScript, the == operator isn't necessarily transitive:

js> '0' == 0
true
js> 0 == ''
true
js> '0' == ''
false

Is the same true in PHP? Can you give an example?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

伴随着你 2024-10-20 06:31:36

== 运算符不具有传递性。

完全相同的场景在 PHP 中给出相同的结果。

echo var_dump('0'==0);
echo var_dump(0=='');
echo var_dump('0'=='');

产量:

boolean true
boolean true
boolean false 

No, the == operator is not transitive.

The exact same scenario gives the same result in PHP.

echo var_dump('0'==0);
echo var_dump(0=='');
echo var_dump('0'=='');

yields:

boolean true
boolean true
boolean false 
抱猫软卧 2024-10-20 06:31:36

PHP也是如此:

//php

'0'==0  //true
0==''   //true
''=='0' //false

你自己没有测试过吗?这些与您为 javascript 提供的语句相同。

The same is true in PHP:

//php

'0'==0  //true
0==''   //true
''=='0' //false

Did you not test it yourself? These are the same statements you provided for javascript.

盗心人 2024-10-20 06:31:36
array() == NULL // true
0 == NULL       // true
array() == 0    // false

脚本语言的问题在于我们开始以非严格的方式比较事物,这导致了不同的“平等”感。当你比较“0”和0时,你的意思与比较“0”和NULL时不同。因此,这些运算符不具有传递性是有道理的。然而,自反性应该是一个不变量。根据定义,平等是自反的。不管你所说的平等是什么意思,A 等于它自己应该总是正确的。

另一个更明显的:

true == 1 // true
true == 2 // true
1 == 2    // false
array() == NULL // true
0 == NULL       // true
array() == 0    // false

The problem with scripting languages is that we start comparing things in a non-strict way, which leads to different senses of "equality." when you are comparing "0" and 0, you mean something different then when you are comparing "0" and NULL. Thus it makes sense that these operators would not be transitive. Reflexivity however, should be an invariant. Equality is by definition reflexive. No matter what sense you mean equality, it should always be true that A equals itself.

another more obvious one:

true == 1 // true
true == 2 // true
1 == 2    // false
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文