php字符串比较意外类型杂耍
在比较一些字符串值时,我在
PHP中遇到了奇怪且意外的行为.当我希望它们返回false时,下面的前两个语句将返回true.最后一个语句按预期返回false.我知道PHP的
Type Juggling,但我从文档中理解的是,当您比较两种不同的数据类型(如字符串和整数)时会发生类型杂耍.在下面的示例中,虽然两个文字都是字符串.这是否意味着当你在PHP中进行字符串比较时,它检查两个字符串以查看它们是否看起来像整数,如果是这样,则将它们两者转换为整数然后比较这些整数值.所以我的问题是在这种行为发生的条件下,字符串比较究竟如何在PHP中工作?
var_dump("10" == "10.0000"); var_dump("10" == "+10."); var_dump("10" == "10 "); #output bool(true) bool(true) bool(false) 更新 因此,baba在comparison involves numerical strings以下的回答确实帮助我了解了正在发生的事情.函数is_numeric将返回给您,无论字符串是否被视为数字字符串.有趣的是,“10”不是数字字符串,而是“10”.我挖掘了PHP源代码,我相信implementation of is_numeric在is_numeric_string_ex函数中.从那一点可以确切地知道PHP何时将字符串视为数字字符串. 解决方法
您将收到错误,因为空格的位置将返回true
var_dump("10" == " 10"); // true 所以,如果你跑 var_dump("10" == "10 "); //false 你实际运行的是因为它将被视为一个字符串 var_dump("10" == 0); //false 这是因为Type juggling会将“10”转换为0,这是在PHP Documentation中 FROM PHP DOC
如果你想欺骗类型杂耍 var_dump("10" == 0 + "10 "); // true This is Because
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |