2017-04-24 40 views
-1

我只是发现了PHP的怪异行为,如果条款Comparsion奇怪的行为0 ==“一”

var_dump((bool)0); 
var_dump((bool)"one"); 
var_dump(0 == "one"); 

它打印

bool(false) bool(true) bool(true) 

文件说,“表达进行评估,以它的布尔值”所以布尔值0false"one"true所以0 == "one"的结果应该是false,但它的代替值是true

有人可以解释它吗?

+1

PHP''==看起来几乎一文不值。这似乎是相关的:http://php.net/manual/en/types.comparisons.php –

+0

“这是在手动的某处解释的PHP行为?(字符串与零比较)”这是不一样的'0'和'0000 '两者都被转换为0,这很明显 – Robert

+0

“这个php行为在手册的某处解释过吗?(带零比较的字符串)”也不一样,因为它将被转换为0,因为它会将第一个数字转换为int。这是不正确的 – Robert

回答

2

"one"被转换为整数0因为这样做comparsion与整数0

如果你比较多个具有一个字符串或比较涉及数字串,则每一个字符串被转换为一个数字,并且比较数值执行。

入住这里:http://php.net/manual/en/language.operators.comparison.php

+1

。请参阅http://php.net/manual/en/types.comparisons.php(' 松散比较与=='表)的布尔翻译“一” – sanderbee

+0

谢谢我找不到合适的线程来解释它 – Robert