最近工作中遇到的关于fasle 和0 的问题。
直接看代码:
?php
/**
* 关于0值和false的测试
* PHP 是类型宽松的语言,这意味着会 将布尔值 false 和整型值 0 视为相同
* @var unknown_type
*/
$p = 0;
if($p)
echo 'aa__';
else
echo 'bb__';
$ptest = $p?$p:'';
var_dump($ptest);
var_dump(empty($p));
var_dump(trim($p));
var_dump($a=0);
echo '
';
//测试2
$p = 1;
if($p)
echo 'cc__';
else
echo 'dd__';
$ptest = $p?$p:'';
var_dump($ptest);
var_dump(empty($p));
测试结果:
PHP中false 和0的问题
总结:
也就是在if else判断里面 0等价于布尔值false,1或者其他非0值都将作为布尔值true,引申:在三目运算(这个很隐蔽啊,不容易意识到)中,或者wile do 结构里也是一样。
empty 遇到0值会把0当作true,遇到1或者其他非0值 会做返回fasle
常用场景:
利用0标识男 1表示女的时候注意了,建议使用 1,2标识
也可以强制把布尔值转化为int ,转换:(int)$p