为了账号安全,请及时绑定邮箱和手机立即绑定

PHP中字符串和数字 0 比较为什么返回true?

PHP中字符串和数字 0 比较为什么返回true?

PHP
波斯汪 2019-05-09 11:07:47
PHP中字符串和数字 0 比较为什么返回true?
查看完整描述

4 回答

?
森林海

TA贡献2011条经验 获得超2个赞

我是这么理解的:
if($str==0),字符串和数字比较是否相等, 相当于 把$str 字符串隐性转换为数字,然后再比较,相当于 if( intval($str) == 0 ) 。if($str==0) 判断 和 if( intval($str) == 0 ) 是等价的,而和 if ($str) 是不一样的。if ($str) 可以判断 $str值有没有被初始化。有没有付值,只要付值,就返回true。
当然你也可以使用 $str="字符串";if($str===0){ echo "返回了true.";} ,就是 判断 $str的数据类型 和值 都和0的值 数据类型一样,才可以返回true

查看完整回答
反对 回复 2019-05-13
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

if($str=="0")
你这样,他就不会是ture了
字符串和整型不好对比.而且他会把字符串的第一个个转换.然后就为true了

查看完整回答
反对 回复 2019-05-13
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

$str = "25字符串"
此事$str==0 就会返回false
为什么?
还是那句话自己看手册字符串转整数的内容 我之前在别的地方说过很多 不想再说了



查看完整回答
反对 回复 2019-05-13
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

(1)对于字符串变量来说,equal比较的两边对象的内容,所以内容相同返回的是true。
至于你没问到的“==”,比较的是内存中的首地址,所以如果不是同一个对象,“==”不会返回true 而是false。
举个简单的例子,
String s1="abc", s2="abc";
String s3 =new String("abc");
String s4=new String("abc");
s1==s2 //true,
s1.equals(s2) //true,
s3.equals(s3) //true,equal比较的是内容
s3==s4//false,==比较的是首地址,所以是false

查看完整回答
反对 回复 2019-05-13
  • 4 回答
  • 0 关注
  • 871 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信