php中如果一个值没有赋值是不是默认是0和null null和0是等价的
<?php
if($flag==0){
echo '0';
}
if($flag==1){
echo '1';
}
if($flag==NULL){
echo '2';
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
不知道意义何在?不过为什么不用PHP提供的
isset
来判断一个变量是否存在呢?另外
empty($var)
本质上等价于!isset($var) || $var == false
.注意,是等于==而不是恒等于===,也就是说,如果$var为0,那用empty判断会返回true.
所以,个人觉得,还是用isset组合比empty更好理解,避免混淆.
这句if判断不为false,没有进入语句块,$flag,$falg2均为未赋值
==========================================
null和0在逻辑判断==中是等价的,不去比较变量类型,在===中是不同的
php中未赋值变量默认为null
if 当中,判断为布尔值(布林型、真假值、boolean)
PHP 当中转为 boolean 会被作为 false 的值:
the boolean FALSE itself FALSE
the integer 0 (zero) 整数 0
the float 0.0 (zero) 浮点数 0.0
the empty string, and the string "0" 空字符串 与 字符串 "0"
an array with zero elements 0 长度的数组
the special type NULL (including unset variables) NULL 型,包含未宣告的变量
SimpleXML objects created from empty tags 空标签创建的 SimpleXML 对象
所以并不是等值,而是被转为了 boolean 型,而他们正好是那些转为 boolen 时会是 false 的值
不等价,你这个没有开错误显示,如果开了的话是会报错的,但不是致命错误,所以不会终止代码执行。
另外PHP中'=='运算是会转换两边的数据类型为一致的,所以结果为真也不代表两边是完全一样的值。要区分类型要用'==='才行。