php中0和字符串比较时注意的问题

简介: php中0和字符串比较时注意的问题

在正式介绍前先抛出一段代码:

<?php
//输入的密码
$password = empty($_POST['password']) ? 0 : $_POST['password'];

//设置的密码
$server_password = 'a123456';

if ($server_password == $password)
{

echo '密码正确';

}
else
{

echo '密码错误';

}
我本来的想法是用户不输入密码直接提交就当用户输入的是0,但是结果另外意外了,竟然输出密码正确。难道0还能等于a123456 ?那我们验证下:

<?php
var_dump((0 == 'a123456')); //输出true
经过一番了解后才知道在php中如果字符串和数字进行对比,字符串将会被强制转换为int类型和数字对比,例如上面的代码等同于下面的代码:

0 == intval('a123456')
因为a123456无法转换为int型因此变为了0,如果字符串是'123456'那就不影响了,intval后依然是123456

目录
相关文章
|
7月前
|
PHP
PHP 字符串
PHP 字符串
25 0
|
1月前
|
JSON JavaScript PHP
PHP把unicode编码的json字符串转中文
PHP把unicode编码的json字符串转中文
13 0