扫码关注官方订阅号
<?php if($flag==0){ echo '0'; } if($flag==1){ echo '1'; } if($flag==NULL){ echo '2'; }
小伙看你根骨奇佳,潜力无限,来学PHP伐。
不知道意义何在?不过为什么不用PHP提供的isset来判断一个变量是否存在呢?
isset
if(isset($_GET['id'])) echo $_GET['id'];
另外 empty($var) 本质上等价于 !isset($var) || $var == false.注意,是等于==而不是恒等于===,也就是说,如果$var为0,那用empty判断会返回true.所以,个人觉得,还是用isset组合比empty更好理解,避免混淆.
empty($var)
!isset($var) || $var == false
if($ret['synctable']==NULL){ $flag = 0; $falg2 =1; }
这句if判断不为false,没有进入语句块,$flag,$falg2均为未赋值
==========================================
null和0在逻辑判断==中是等价的,不去比较变量类型,在===中是不同的
php中未赋值变量默认为null
var_dump($flag); 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中'=='运算是会转换两边的数据类型为一致的,所以结果为真也不代表两边是完全一样的值。要区分类型要用'==='才行。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
不知道意义何在?不过为什么不用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中'=='运算是会转换两边的数据类型为一致的,所以结果为真也不代表两边是完全一样的值。要区分类型要用'==='才行。