我很确定这是我的新手 PHP 知识中的一个简单的基本缺陷,但是当发生以下情况时我感到很惊讶:
$result
是TRUE
...那么为什么它被认为等于字符串“email”?我猜这是因为,从技术上讲,它是一个bool
而且它不是假的?因此,当它与字符串(例如“电子邮件”)进行比较时,它会返回 true。
我应该更改我的方法以将结果作为string
包含“true”的结果返回(而不是return true;
成功),还是有另一种方法我应该这样做?
谢谢。
我很确定这是我的新手 PHP 知识中的一个简单的基本缺陷,但是当发生以下情况时我感到很惊讶:
$result
是TRUE
...那么为什么它被认为等于字符串“email”?我猜这是因为,从技术上讲,它是一个bool
而且它不是假的?因此,当它与字符串(例如“电子邮件”)进行比较时,它会返回 true。
我应该更改我的方法以将结果作为string
包含“true”的结果返回(而不是return true;
成功),还是有另一种方法我应该这样做?
谢谢。
是的,true
等于 ( ==
) 到一个非空字符串。===
虽然不完全相同( )。
我建议你仔细阅读类型比较表。
它返回 true 因为 php 会尝试转换一些东西以便能够比较它们。在这种情况下,它可能会尝试将右侧的字符串转换为布尔值,在这种情况下为真。true == true 当然是真的。
通过 $result === "email" (triple =) 你告诉 PHP 它不应该进行转换并且如果类型不匹配应该返回 false。
if($result === "email")
会成功的,但就个人而言,我永远不会走这条路。