13

我很确定这是我的新手 PHP 知识中的一个简单的基本缺陷,但是当发生以下情况时我感到很惊讶:

在此处输入图像描述

$resultTRUE...那么为什么它被认为等于字符串“email”?我猜这是因为,从技术上讲,它是一个bool而且它不是假的?因此,当它与字符串(例如“电子邮件”)进行比较时,它会返回 true。

我应该更改我的方法以将结果作为string包含“true”的结果返回(而不是return true;成功),还是有另一种方法我应该这样做?

谢谢。

4

3 回答 3

15

是的,true等于 ( ==) 到一个非空字符串。===虽然不完全相同( )。

我建议你仔细阅读类型比较表

于 2011-05-09T14:26:40.420 回答
3

它返回 true 因为 php 会尝试转换一些东西以便能够比较它们。在这种情况下,它可能会尝试将右侧的字符串转换为布尔值,在这种情况下为真。true == true 当然是真的。

通过 $result === "email" (triple =) 你告诉 PHP 它不应该进行转换并且如果类型不匹配应该返回 false。

于 2011-05-09T14:29:35.693 回答
1

if($result === "email")会成功的,但就个人而言,我永远不会走这条路。

于 2011-05-09T14:25:25.360 回答