刚学 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($变量)会出现的逻辑遗憾

PHP7 关于变量的基本判断的更多相关文章

  1. 【转】shell编程下 特殊变量、test / [ ]判断、循环、脚本排错

    [转]shell编程下 特殊变量.test / [ ]判断.循环.脚本排错 第1章 shell中的特殊变量 1.1 $# $# 表示参数的个数 1.1.1 [示例]脚本内容 [root@znix ~] ...

  2. JS 中对变量类型的判断

    总结:1. 一般简单的使用 typeof 或 instanceof 检测(这两种检测的不完全准确)          2. 完全准确的使用 原生js中的 Object.prototype.toStri ...

  3. javascript中对变量类型的判断

    本文正式地址:http://www.xiabingbao.com/javascript/2015/07/04/javascript-type 在JavaScript中,有5种基本数据类型和1种复杂数据 ...

  4. py定义变量-循环-条件判断

    定义变量 # print('hahaha')name = " let'go "title = '刘伟长得 "很帅"!'conent = '''     let' ...

  5. JavaScript 变量克隆和判断变量类型

    一.变量克隆 在js中经常会遇到将一个变量赋值给一个新的变量这种情况,这对于基本类型很容易去实现,直接通过等号赋值就可以了,对于引用类型就不能这样了.(注:像函数,正则也可以直接通过等号赋值) 这里我 ...

  6. shell编程下 特殊变量、test / [ ]判断、循环、脚本排错

    第1章 shell中的特殊变量 1.1 $# $# 表示参数的个数 1.1.1 [示例]脚本内容 [root@znix ~]# cat /server/scripts/show2.sh #!/bin/ ...

  7. 10_bash_变量_条件判断及运算_sed_循环

    shell编程: 编译器.解释器编程语言:机器语言.汇编语言.高级语言 静态语言:编译型语言 强类型(变量):变量在使用前,必须事先声明,甚至还需要初始化 事先转换成可执行格式 C/C++.C#.Ja ...

  8. python基础教程 变量/输入输出/if判断

    python的运用越来越多.大数据经常被人谈及,数据从何而来?通过各个平台.app.网站数据的收集,分析,过滤,生成报告,这些都可以用python来处理,并且有很多成熟的库可以直接用了.那还不赶紧深入 ...

  9. Swift 常量、变量、条件判断

    - 常量用 let ,变量用 var - // Optional为可选项,// 可用类型值 + ? 代替 let x: Optional = 10 let y: Int? = 5 print(x! + ...

随机推荐

  1. Opencv图像变成灰度图像、取反图像

    #include <iostream>#include <opencv2/opencv.hpp> using namespace cv;using namespace std; ...

  2. ubunt 14.04 Could not find CMAKE_ROOT !!! CMake has most likely not been installed correctly. Modul

    CMake Error: Could not find CMAKE_ROOT !!! CMake has most likely not been installed correctly. Modul ...

  3. Oracle数据库管理

    一.Oracle 的(资源限制)概要文件 为了控制系统资源的使用, 可以利用资源限制概要文件. 资源限制概要文件是 Oracle 安全策略的重要组成部分, 利用资源限制概要文件可以对数据库用户进行基本 ...

  4. hdu 2553 N皇后问题(一维数组详尽解释)

    //一维数组解法(注释详尽)//num皇后可以表示第num列,然后枚举num皇后所在的行//二维数组对角线转换为坐标的关系#include<stdio.h> #include<str ...

  5. hdu 4741 Save Labman No.004 (异面直线的距离)

    转载学习: #include <cstdio> #include <cstdlib> #include <cstring> #include <algorit ...

  6. SQL Server 本地时间和UTC时间的相互转换

    SET @UTCDate = DATEADD(hour, DATEDIFF(hour,GETDATE(),GETUTCDATE()), @LocalDate) SET @LocalDate2 = DA ...

  7. 远程访问Function时报错Remote table-valued function calls are not allowed.

    开始是这样调用的:select * from [LinkedServer].[db name].dbo.[function name](param1, param2) 原因: Only table-v ...

  8. App测试从入门到精通之更新测试

    我们都知道,app在使用一段时间,都会有更新,而且更新会不止一次.在实际测试中,关于更新的测试场景也是我们需要重点关注的,接下来我们就看一下关于App的更新测试有哪些测试点我们需要注意: APP更新测 ...

  9. LightOJ 1065 Island of Survival (概率DP?)

    题意:有 t 只老虎,d只鹿,还有一个人,每天都要有两个生物碰面,1.老虎和老虎碰面,两只老虎就会同归于尽 2.老虎和人碰面或者和鹿碰面,老虎都会吃掉对方 3.人和鹿碰面,人可以选择杀或者不杀该鹿4. ...

  10. Ubuntu16.04修改静态ip地址

    https://blog.csdn.net/mdw5521/article/details/79270035