zoukankan      html  css  js  c++  java
  • PHP7 关于变量的基本判断

    刚学 PHP ,一些基础还不太牢固,边实践边记录。

    about NULL

    $class_name = null;

    语句结束后,$class_name 是空,没有,什么都没有的“空”。用 is_null($class_name) 来判断就是“是”,用 empty 来检测也是“是”,来看下边的过程和结果:

    $class_name = null;
    
    echo 'Is Empty: '.empty($class_name).'<br/>';
    echo 'Is set: '.isset($class_name)."<br/>";
    echo 'Is: '.$class_name."<br/>";
    echo "Is null: ".is_null($class_name);

    换一下,如果 $class_name = ""; 呢,看下边结果

    下边,给 $class_name 赋值看看,先给个数字 1

    再给个字符串 “1”

    给个数字 0

    字符串 “0”

     

    贴近现实,给个 “abcdefg”

     

    总结一下:

    如果想像 C# 那样,判断一个“变量”不要是空,而且不要是空字符串,是有值的,empty() 似乎并不合适,因为它会把 0 或者 "0" 也认为是 empty,似乎 isset 或直接 if( $class_name )更合适一点;

    小心!unset()之后,直接 echo $class_name 或者 echo is_null($class_name) 会出错,但 empty($class_name)会运行,并且为 1;

      null "" 1 "1" 0 "0" string
    Empty() 1 1     1 1  
    isset   1 1 1 1 1 1
    Is / Value     1 1 0 0 string
    is_null 1            

    补:

    想判断数字?先判断 isset,然后判断 is_numeric,is_numeric 会把字符串、十六进制等“试着”转换成数字,能转成就是“是”,转不了就是“否”。这样可以避免当 0 也是合法数字时,if($变量)会出现的逻辑遗憾

  • 相关阅读:
    解决GOOGLE不能用的办法
    Elmah错误日志工具
    Linq 更改主键值
    qcow2、raw、vmdk等镜像格式
    Ceph相关博客、网站(256篇OpenStack博客)
    Delphi中inherited问题
    Qt qss一些伪装态,以及margin与padding区别
    Qt双缓冲机制:实现一个简单的绘图工具(纯代码实现)
    写出一篇好博文需要用到的工具
    最短路径启蒙题
  • 原文地址:https://www.cnblogs.com/cinlap/p/7473645.html
Copyright © 2011-2022 走看看