Heim > Backend-Entwicklung > PHP-Tutorial > if(0 == 'hello') = true 求解释一下

if(0 == 'hello') = true 求解释一下

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-06 20:22:42
Original
1192 Leute haben es durchsucht

$num = 0;
if($num == 'hello'){
    echo $num; // echo 0
}
Nach dem Login kopieren
Nach dem Login kopieren

回复内容:

$num = 0;
if($num == 'hello'){
    echo $num; // echo 0
}
Nach dem Login kopieren
Nach dem Login kopieren

看看官网: PHP 类型比较表

if(0 == 'hello') = true 求解释一下

具体原因,也有说明

if(0 == 'hello') = true 求解释一下


更新 2015-12-10 09:54:28


看了你的评论,我觉得有必要再更新一下。

你犯了一个错误,我把它称为想当然的知识迁移。看看我之前写的《代码之谜》系列。

字符串=true
0 = false

你的思路是这样的:

<code>因为: 字符串=true (前提)
因为:0 = false (前提)


又因为: true != false (真理)
所以: 字符串 != 0 (有依据吗??) [1]

因为: 'hello' 是字符串 (前提)
因为: $num = 0 (前提)

所以: 'hello' != $num</code>
Nach dem Login kopieren

有依据吗?好像有。

如果 A=B,B=C,那么 A=C。

这就是我们经常使用的传递性

同理:如果 A=B,B!=C,那么 A!=C。

好像并没有什么错误。这就是我为什么把它称为想当然的知识迁移。PHP 手册中,从来没有说过比较运算符合传递性,没有,从来没有。

不仅仅是 PHP,任何语言都是,当你看到 A=B 并且 B=C 时,不要想当然的认为 A=C。

----------- 继续更 2015-12-10 10:08:30 ---------------

题外话。

说说其它的几个特性。

在 javascript 中,甚至有不满足同一性的代码。什么是同一性,就是说:

<code>如果 A,那么 A=A</code>
Nach dem Login kopieren

那 PHP 呢,还是继续看那张图:

if(0 == 'hello') = true 求解释一下

我们看对角线。哇,都是 TRUE,谢天谢地。

还有一个交换律

<code>如果 A=B,那么 B=A</code>
Nach dem Login kopieren

自己对照着表看吧。

Verwandte Etiketten:
php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage