php中如果一个值没有赋值是不是默认是0和null null和0是等价的

发布于 2022-09-04 11:31:29 字数 273 浏览 11 评论 0

<?php
if($flag==0){
    echo '0';
}
if($flag==1){
    echo '1';
}
if($flag==NULL){
    echo '2';
}

clipboard.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

〆一缕阳光ご 2022-09-11 11:31:29

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

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

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

您的好友蓝忘机已上羡 2022-09-11 11:31:29
if($ret['synctable']==NULL){
    $flag = 0;
    $falg2 =1;
}

这句if判断不为false,没有进入语句块,$flag,$falg2均为未赋值

==========================================

null和0在逻辑判断==中是等价的,不去比较变量类型,在===中是不同的

php中未赋值变量默认为null

var_dump($flag);

null
逐鹿 2022-09-11 11:31:29

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 的值

潇烟暮雨 2022-09-11 11:31:29

不等价,你这个没有开错误显示,如果开了的话是会报错的,但不是致命错误,所以不会终止代码执行。

另外PHP中'=='运算是会转换两边的数据类型为一致的,所以结果为真也不代表两边是完全一样的值。要区分类型要用'==='才行。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文