php中如果一个值没有赋值是不是默认是0和null null和0是等价的
伊谢尔伦
伊谢尔伦 2017-04-11 09:40:15
[PHP讨论组]
<?php
if($flag==0){
    echo '0';
}
if($flag==1){
    echo '1';
}
if($flag==NULL){
    echo '2';
}

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(4)
PHPz

不知道意义何在?不过为什么不用PHP提供的isset来判断一个变量是否存在呢?

if(isset($_GET['id'])) echo $_GET['id'];

另外 empty($var) 本质上等价于 !isset($var) || $var == false.
注意,是等于==而不是恒等于===,也就是说,如果$var为0,那用empty判断会返回true.
所以,个人觉得,还是用isset组合比empty更好理解,避免混淆.

巴扎黑
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中'=='运算是会转换两边的数据类型为一致的,所以结果为真也不代表两边是完全一样的值。要区分类型要用'==='才行。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号