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

2021-03-11 09:09:42 字数 2739 阅读 5376

1楼:匿名用户

我是这么理解的:du

if($str==0),字符串zhi和数字比较是否相等dao, 相当于 把$str 字符串隐性转换为数字回,然后再比较,相当于 if( intval($str) == 0 ) 。if($str==0) 判断

答 和 if( intval($str) == 0 ) 是等价的,而和 if ($str) 是不一样的。if ($str) 可以判断 $str值有没有被初始化。有没有付值,只要付值,就返回true。

当然你也可以使用 $str="字符串";if($str===0) ,就是 判断 $str的数据类型 和值 都和0的值 数据类型一样,才可以返回true

2楼:php问答网

if($str=="0")

你这样,他就不会是ture了

字符串和整型不好对比.而且他会把字符串的第一个个转换.然后就为true了

这不是什么问题.你不要那么写就好了.

3楼:邵添别雅诗

将字符串和数字比较,php会试着把字符串转换成数据,由于无法将"字符串"

转换成数字,因此返回0。

你可以试一下

("10字符串"

==0)

它会返回false,因为将"10字符串"转换成数字时会返回10。

4楼:匿名用户

这是老问题了

之前在csdn跟人讨论过这个

你去看下手册字符串转数字的那个内容

应该内会明白吧

看到楼下容有人回答那个 我还是举个例子 然后楼主去看手册 自己思考$str = "25字符串"

此事$str==0 就会返回false

为什么?

还是那句话自己看手册字符串转整数的内容 我之前在别的地方说过很多 不想再说了

为什么php传递参数值为0时,empty判断参数为真

5楼:四舍**入

empty()函数是bai

用来测试变量是否已经配置du。若变zhi量已存在、非空字符串dao或者非零,则返回 false 值;反版之返回 true值。所以,权当字符串的值为0时,也返回true,就是执行empty内部的语句。

这就是陷阱。

如: 假设 $value = 0; 则empty($value)=false。

判断字符串是否为空,可以这么判断: if ($value=="") ...

6楼:拒绝自己成长

empty()函数是用来测试变量是否已经配置。若变量已存在、非空字符串或者非零,则返回 false 值;反之返回 true值。

回所以,当字符串的值为0时,也返回true,就是执行empty内部的语句。这就是陷阱。

如: 假设 $value = 0; 则empty($value)=false。

判断字符串是否为空,可以这么判断: if ($value=="") ...

* 格式:bool empty ( mixed var )

* 功能:检查一个变量是否为空

* 返回值答:

* 若变量不存在则返回 true

* 若变量存在且其值为""、0、"0"、null、、false、 array()、var $var; 以及没有任何属性的对象,则返回 ture

* 若变量存在且值不为""、0、"0"、null、、false、 array()、var $var; 以及没有任何属性的对象,则返回 false

* 版本:php 3, php 4, php 5

7楼:

empty这个函数本来就是验证是否为空,如果为空返回true,否则为false

为什么php中 echo ("00000"=="000000"); 返回的值为1? 五个0与六个0的字符串居然相等!

8楼:凡面郭达子

复对于比较运算符“==”,制如果比较一bai个数字和字符串du或者比较涉及到数字内容的字符zhi串,则dao字符串会被转换为数值并且比较按照数值来进行。

所以,如下字符串中,转换为数值之后相等而输出1。

echo("0"=="000000");//1

echo("00000"=="000000");//1

echo("12345"=="012345");//1

echo("10"=="1e1");//1

?>

而echo("12345n"=="012345n");

由于比较的表达式中两边都含有字母,所以均当做字符串来处理而没有进行转换,所以没有输出1。

另外,当其中的涉及到数字内容的字符串要进行转换的时候,其开始的值决定转换后的值,比如:

echo(12345=="012345我和我的小伙伴们都惊呆了。");//1

echo(12345=="01234n5");//不会输出1

echo("12345"=="012345我和小伙伴们都惊呆了n");//这样也不会输出1

9楼:匿名用户

的确是这样的。如果两个字符串都是纯数字,就当做是两个数字在比较。

如果至少一个字符串为非纯数字,会进行字符串比较。

如果一定要比较字符串,请使用strcmp()函数,不要直接比较。

望采纳!

10楼:伟少love静静

这个不是bug,是php类型比较规则规定的,你看看php类型比较就明白了

c++中,字符和字符串的区别是什么

1楼 柳生十连兵 字符串 就是把字符串起来 简单的说是一个字符数组。如 a 是个字符 abc 就是个字符串 c 中string和char的主要区别在哪? 2楼 匿名用户 a 是char a 是char string,这两者都是普通的字符和字符串,和c中没什么不同 3楼 匿名用户 1 char是字符类...

c++中,什么是将数字字符串转换成整数

1楼 匿名用户 整数指的是int long等,字符串是string。 比如int a 1 和string str 1 虽然你最后输出在屏幕上是一样的,都是1,但是在内存中的存储的asc2号码并不一样。要想转换的话,其实也简单, 就是当前字符减去 0 就行了 2楼 匿名用户 整数比如说1 2 3 4 ...

c++中怎么判断string类型的字符串变量是否为数字

1楼 庄政警 遍历每个字符copy,判断是否bai在 0 9 就好 include include using namespace std bool strisnum string s return true int main c 中怎么判断一个string类型的字符串变量是否为数字? 2楼 匿名用...