php字符串比较意外类型杂耍

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php字符串比较意外类型杂耍脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在比较一些字符串值时,我在 PHP中遇到了奇怪且意外的行为.当我希望它们返回false时,下面的前两个语句将返回true.最后一个语句按预期返回false.我知道PHPType Juggling,但我从文档中理解的是,当您比较两种不同的数据类型(如字符串和整数)时会发生类型杂耍.在下面的示例中,虽然两个文字都是字符串.这是否意味着当你在PHP中进行字符串比较时,它检查两个字符串以查看它们是否看起来像整数,如果是这样,则将它们两者转换为整数然后比较这些整数值.所以我的问题是在这种行为发生的条件下,字符串比较究竟如何在PHP中工作?

var_dump("10" == "10.0000");
VAR_dump("10" == "+10.");
var_dump("10" == "10 ");

#output
bool(true)
bool(true)
bool(false)

更新

因此,baba在@L_512_8@以下的回答确实帮助我了解了正在发生的事情.函数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

脚本宝典总结

以上是脚本宝典为你收集整理的php字符串比较意外类型杂耍全部内容,希望文章能够帮你解决php字符串比较意外类型杂耍所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。