我也学php:类型判断和NULL,空值检查

PHP 判断数组是否为NULL的5大方法 NULL 博文链接:https://onestopweb.iteye.com/blog/2393876 立即下载

PHP是一种宽松类型的编程语言,在函数中对传入的参数值的“类型”以及”值是否为空或者NULL“进行检查是不可缺少的步骤。


类型检查

从PHP5开始,PHP允许对函数的参数进行类型约束,即可以约束参数的类型为对象,接口,数组(PHP 5.1开始)或者callable(PHP5.4起),但是不可以约束参数类型为标量类型(如int ,string,bool),也不可以约束为Traits类型。如果不约束,默认情况下,参数的类型为mixed,即可以接受所有类型。

 function test(array $names)//正确的做法
 function test(string $name)//错误的做法

针对特定参数类型的功能函数,在函数中对参入的参数进行类型检查是很必须(虽然我见过一些国外学者的文章,它们不推荐这么做,这么做相当于束缚了函数的功能)。

在PHP中可以通过gettype和get_resource_type 两个函数得到变量的类型,它们分别返回参数的类型和资源类型的字符串,此时可以直接进行字符串比较来确定类型是否正确。另外一种方式是通过is_***系列的函数来判断变量的类型是否为指定的类型,比如is_array,is_scalar,is_resource,is_string。


变量/常量是否定义或初始化

在PHP中,变量在定义以后不需要进行初始化,它会被初始化为具有其类型的默认值,但是不推荐这么做,一般情况下最好是对变量进行显示初始化。

对变量是否显式初始化可以使用”语法结构“-isset进行判断,它可以判断一个变量是否已经显式初始化。isset只有在变量”未显式赋值或者赋值为NULL“的时候返回为false,其他情况,比如值为空字符串,0等情况,它都返回true。

可以使用unset来删除一个已经定义的变量。

isset和unset只能是对”变量“进行判断和删除定义。如果是针对”常量“,那么就必须使用defined来判断。如果是针对”函数“,那么就必须使用function_exist()函数进行判断。


判断变量是否为NULL

在PHP中要判断一个变量是否NULL有很多方式:

is_null VS isset

这两个函数都可以来判断一个变量是否为NULL,它们对空字符串,0,false的认同是一样的。即is_null=! isset()。

但是isset是语法结构,is_null是函数。在性能上,语法结构相对要优秀一点。所以很多地方都推荐使用isset来代替is_null的使用。

== VS ===

在有些情况下,推荐使用isset来判断一个变量是否为NULL。

但是从语义上来说,一个变量”是否已显示初始化“和”是否为NULL“是不同的概念,在某些场景下使用isset是不合适的,比如检查一个函数的返回值是否为NULL。

此时可以使用"=="和”===“来判断它们是否为NULL。

对于"=="和”===“,它们直接的区别还是很大。对于"==",它认同空字符串,0,false都为NULL。而对于"===",只有一个变量真的为NULL,它才代表NULL。

另外"==="相对于"isset"来说,性能基本接近,甚至要好点。


因此综上述,判断一个变量是否为NULL最好的办法就是直接使用"===",这样就不用在is_null,isset之间犹豫。其实上述的结论也同理于False的判断。


empty()函数的认识

在判断变量是否为NULL时候,也会把empty这个函数拿来和isset之类的一起讨论。其实这个函数没有必要和他们进行比较,因为它代表的意思很简单,它的意思就是判断一个变量所存储的内容是否为零或者为空,而这里的空不仅仅是NULL。那么有哪些内容代表零或者空的概念呢?""、0、"0"、NULL、FALSE、array()、var $var; 以及没有任何属性的对象都将被认为是空的,都代表了为零。

  1. 如果$e是未定义或值为NULLL,$e=NULL,它肯定是空,即empty($e)=true;
  2. 如果$e是int类型,$e=0,就相对于数字,0代表为零,即empty($e)=true;
  3. 如果$e是string类型,$e="",相对于字符串,”“就代表为是空,即empty($e)=true;
  4. 如果$e是string类型,$e="0",相对于字符串,”0“就代表为是零,即empty($e)=true;
  5. 如果$e是bool类型, $e=false,相对true,false就代表为空,即empty($e)=true;
  6. 如果$e是array类型,$a=array(),相对数组来说,没有元素的数据就为空,即empty($e)=true;

除了当变量没有置值时不产生警告之外, empty() 是 (boolean) var 的反义词。


进一步阅读

类型约束:http://www.php.net/manual/zh/language.oop5.typehinting.php

Variable handling 函数:http://www.php.net/manual/zh/ref.var.php

PHP 类型比较表:http://www.php.net/manual/zh/types.comparisons.php

OneNET物模型实战:如何用NB-IOT模块上传JSON数据并解析 本文详细介绍了如何利用NB-IOT模块将传感器数据上传至中国移动OneNET物联网平台,并利用其物模型功能实现JSON数据的自动解析。文章从理解OneNET物模型与OneJson协议入手,逐步讲解了平台侧物模型创建、设备注册,以及设备端数据构造、HEX编码与NB-IOT模块AT指令上报的全流程,并提供了关键的调试技巧与常见问题排查方法,为物联网开发者提供了完整的实战指南。 阅读详情

相关推荐

使用电荷放大器处理压电加速度计输出

电阻器 R p模拟传感器的绝缘电阻,为产生的电荷创建泄漏路径。在此图中,顶部波形显示传感器产生的电荷,而底部波形显示电荷放大器的输出。这需要具有大输入阻抗的放大级,以防止产生的电荷通过与传感元件并联的放大器的输入阻抗泄漏。换句话说,电荷放大器补偿传感器产生的电荷 q p ,反馈电容器 C F中具有相反极性的等量电荷。因此,任何与传感器并联的绝缘电阻,如电缆的绝缘电阻或传感器的漏电电阻Rp,都不能流过电流。漂移是指电荷放大器输出在一段时间内发生的变化,而不是由被测物理参数的变化(我们讨论的加速度)引起的。

weixin_45260069的博客 3905

php中判断空,null

php返回值经常要判断是否为空,null,false等,这里同意做了对比: s_empty 判断变量是否为空或为0,这里的空包括:null、空字符串、0、false、空数组,搞笑的是包括了"0",但不包括"false"。 is_null 判断变量是否为NULL,刚定义但未初始化(赋值)的变量肯定是null,直接设置为null也是。 isset 跟 is_null 感觉基本上可以反着用。 变量 is_empty is_null isset $a="" true false

wayhb的专栏 1605

CST局部网格加密实战:从基础设置到Meshgroup高效管理

本文详细解析了CST电磁仿真软件中的局部网格加密技术,重点介绍Meshgroup功能的高效管理方法。通过平行板电容等实战案例,阐述从基础设置到多级加密策略的完整流程,帮助用户精准提升关键区域仿真精度,同时优化计算资源使用效率。

grafana6viz的博客 694

php 如何判null,PHP 判断数组是否为NULL的5大方法

header('Content-Type: text/html; charset=utf-8');$a = null;//1. isset功能:判断变量是否被初始化echo isset($b)?'1.存在':'1.不存在';//2. empty功能:检测变量是否为”空”echo empty($a)?'2.不存在':'2.存在';//3. var == null功能:判断变量是否为”空”echo $...

weixin_39788960的博客 1042

ROS水下仿真神器uuv_simulator:从零搭建水下机器人测试环境(附Gazebo配置全流程)

本文详细介绍了如何使用ROS和uuv_simulator从零搭建水下机器人仿真测试环境,包括Gazebo配置全流程。通过系统环境准备、水下世界构建、机器人模型定制开发等步骤,帮助开发者在虚拟海洋环境中高效验证算法,大幅降低研发成本。特别适合水下机器人研发人员参考。

ujm5678901的博客 262

同济土木非0基础三个月跨考复旦计算机攻略

跨考cs攻略前言我cs专业课如何复习How to start from zero简历其他复试 前言 建议多去工地/化工厂涡轮增压一下 我 同济土木gpa 3.2/5 挂科 * n 辣鸡项目 * n (padding 简历) 21考复旦计算机专硕 10月-12月 学习+复习 总分392 政治 68;背肖4即可 英语二 78 裸考,(高考英语140+);做点真题,建议据自己情况准备 数学二 142 ;(高考数学接近满分);做真题+模拟题,每天写一张试卷 专业课 104 ,考试生病了,下文展开。 cs专业课

piglake的博客 7237

php 判断变量是否为null

一、is_null 和isset 这两个函数都可以判断一个变量是否为null,它们对空字符串,0,false的认同是一样的. is_null = !isset(); 不同的是 isset是语法结构,is_null 是函数。就性能而言,语法结构相对优秀一点。所以很多地方推荐使用isset代替is_null的使用 2、== 和 === 在有些情况下,推荐使用isset来判断一个变量是否为null 但是从语法上来说,一个变量 "是否已显示初始化" 和 "是否为null" 是不同的概念,在某些场景下使用

qq_32450471的博客 3170

必知必会:DeepSeek-R1训练流程详解

必知必会:DeepSeek-R1训练流程详解

丨汀、的博客 287

php nil,nil、null与ngx.null

问题概述今天第一次在nginx+lua架构下,写了个需要操作Redis的后台接口,该接口的功能主要是接受客户端的json格式的post请求,实现对保存在redis中的任务插入、删除、查询等。虽然nginx,lua等都是刚接触,但这几个接口还是顺风顺水的坐下来了,不能忘了感谢春哥章亦春。在Redis中记录的任务其实很简单,每插入一个任务,就在redis中增加一个HASH结构,每次查询返回该SET的各...

weixin_39929254的博客 429

飞牛fnNAS同步微信微信聊天记录

微信聊天记录如何备份到NAS?本文介绍了利用NAS虚拟机和同步工具实现微信记录自动备份的方法。通过在NAS上搭建"云电脑"长期运行微信PC端,并配置微力同步将聊天记录文件夹自动同步到NAS存储,解决了传统电脑备份的安全性问题。操作步骤包括:1)在NAS上安装虚拟机系统;2)登录微信PC端并同步手机记录;3)配置同步工具将微信记录文件夹同步到NAS。该方法尤其适合不常使用PC微信的用户,可实现记录永久保存和远程查看,更换手机时也能快速恢复历史记录。

dgnankai的专栏 4303

uniapp(安卓苹果APP端):解决video组件播放视频卡顿,视频一直加载非常缓慢或加载不出来解决方案,解决多个video组件视频播放很卡一直加载非常慢怎么办(无论真机调试还是本地测试都完美搞定)

uni-app APP端video组件播放视频卡顿,uniapp video app 加载不出来解决方案,uniapp app使用video视频播放卡顿,uni-app APP端video组件播放视频卡顿_uniapp video老是加载,uniapp开发app视频在真机上卡顿,安卓app播放视频很卡,苹果ios真机运行播放视频加载很慢怎么办,解决UniApp中MP4视频播放卡顿问题,解决m3u8视频播放很卡的问题,uniapp 使用video组件,部分视频加载非常慢,uniapp视频播放卡顿,安卓视频播放

✅ 精选推荐文章 7915

nil和Nil和NULL的判断

开发过程中,我们通过http请求,后台返回json数据,而有时数据里某一字段的值为null~,然后我们把此值赋值给NSArray,NSdictionary,或是NSString,然后我们会判断此值为null时,所做的处理,而通常惯性思维判断时我们都会写:if(dict == nil)或是if(dict == Nil)或是if(dict == NULL)再或是if(dict isEqual nil)

Hibiscus_blog的博客 855

电容式三点式振荡电路/电感式三点振荡电路基础知识及Multisim电路仿真

摘要:三极管振荡电路利用放大特性与正反馈实现自激振荡,需满足巴克豪森条件(增益≥1,相位匹配)。核心由放大级、反馈网络、选频网络和稳幅环节构成。主要分为三类:1)LC/RC正弦波振荡电路(如电容三点式、电感三点式),输出高频/低频正弦波;2)多谐振荡电路,通过电容充放电产生方波;3)张弛振荡电路,生成锯齿波等。设计需关注相位匹配、增益控制和元件适配。LC振荡频率由谐振参数决定,RC振荡由时间常数控制。稳幅机制通过非线性或主动元件维持等幅输出。该电路在信号发生、时钟源等领域有广泛应用。

XU157303764的博客 2037

PHP中判断空的方法,php中类型判断和NULL,空值检查的方法

在一些接口和数据库的设计中。数据库的非必填字段可能为null或者为空。这个时候接口前端javascript去判断的时候就会比较麻烦。为了便于统一的判断。一律把null和 空装换成 ''空.这样前端的判断就变得简洁 if(aa == ''){........}建议使用 == 或者 === 来判断。。以下是我简短的一个把数据库里面的 null 变成 '' 的部分代码//循环检测并把nuul转换成 ''...

weixin_33651906的博客 768

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

php空值的判断,PHP 类型判断和NULL,空值检查

PHP是一种宽松类型的编程语言,在函数中对传入的参数值的“类型”以及”值是否为空或者NULL“进行检查是不可缺少的步骤。类型检查从PHP5开始,PHP允许对函数的参数进行类型约束,即可以约束参数的类型为对象,接口,数组(PHP 5.1开始)或者callable(PHP5.4起),但是不可以约束参数类型为标量类型(如int ,string,bool),也不可以约束为Traits类型。如果不约束,默认...

weixin_39831104的博客 585

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

php 判断 mysql null_PHP 类型判断和NULL,空值检查

PHP是一种宽松类型的编程语言,在函数中对传入的参数值的“类型”以及”值是否为空或者NULL“进行检查是不可缺少的步骤。类型检查从PHP5开始,PHP允许对函数的参数进行类型约束,即可以约束参数的类型为对象,接口,数组(PHP 5.1开始)或者callable(PHP5.4起),但是不可以约束参数类型为标量类型(如int ,string,bool),也不可以约束为Traits类型。如果不约束,默认...

weixin_31068491的博客 809

php类型 空值是,PHP 类型判断和NULL,空值检查

PHP是一种宽松类型的编程语言,在函数中对传入的参数值的“类型”以及”值是否为空或者NULL“进行检查是不可缺少的步骤。类型检查从PHP5开始,PHP允许对函数的参数进行类型约束,即可以约束参数的类型为对象,接口,数组(PHP 5.1开始)或者callable(PHP5.4起),但是不可以约束参数类型为标量类型(如int ,string,bool),也不可以约束为Traits类型。如果不约束,默认...

weixin_39947016的博客 182

PHP 类型判断和NULL,空值检查

PHP是一种宽松类型的编程语言,在函数中对传入的参数值的“类型”以及”值是否为空或者NULL“进行检查是不可缺少的步骤。 类型检查 从PHP5开始,PHP允许对函数的参数进行类型约束,即可以约束参数的类型为对象,接口,数组(PHP 5.1开始)或者callable(PHP5.4起),但是不可以约束参数类型为标量类型(如int ,string,bool),也不可以约束为Trait...

WindWant 68

PHP中的`null`和空值:理解与处理

null""或' '。[]或array()。整数值0。浮动值0.0。布尔值false。这些值本质上都可以被认为是“空”,它们在PHP的逻辑判断中会被转换为false。$zero = 0;可以用empty()echo '变量为空';empty()会返回true对于null、空字符串、0false、空数组等值。null和空值在PHP中有着不同的语义和用途。null表示变量没有值,通常用于初始化或清除变量,而空值则代表着某个类型的“空”值(如空字符串、空数组等)。

Chongdcg的博客 4779

php判断空字符串,PHP空值检测

几乎任何入口的HTTP请求我们都会去检测它携带的参数,类似 isset() empty() 的函数一定不少见。以下的测试结果基于 PHP7.16是否定义判断: isset()可以使用 isset() 函数判断一个变量是否定义,数组内某个元素是否被初始化,它的效率比 array_key_exists() 高4倍左右$a = 'test';$b = array('key1' => 'value1...

weixin_32515577的博客 2355

php判断空值_php empty,isset,is_null判断比较(差异与异同)

做php开发时候,想必在使用:empty,isset,is_null 这几个函数时候,遇到一些问题。甚至给自己的程序带来一些安全隐患的bug。很多时候,对于isset,empty都认为差不多。因此开发时候,就没有注意,一段作为流程判断时候,就出现bug问题了。一、举例说明A.一个变量没有定义,我们该怎么样去判断呢#不存在$test 变量$isset= isset($test)?"test is ...

weixin_33042659的博客 458

php开发实战分析(3):php中判断变量为空(0、false、null)的方法

empty() 并不会产生警告,哪怕变量并不存在。 这意味着 empty() 本质上与 !isset($var) || $var == false 等价。

挖掘大数据价值,让决策者快速洞悉趋势,让大众读懂数据背后的故事。 3521

php判断mysql空值,使用PHP检查MySQL NULL值

This is how my table looks like..id col1 col2---------------1 a x2 NULL y3 NULL z4 NULL tcol1 has a default value of NULL.I want to use col1 data If col1 is not null, otherwise use col2 dat...

weixin_42512246的博客 406

php判断空值_PHP空值检测函数与方法汇总

几乎任何入口的HTTP请求我们都会去检测它携带的参数,类似 isset() empty() 的函数一定不少见。以下的测试结果基于 PHP7.16是否定义判断: isset()可以使用 isset() 函数判断一个变量是否定义,数组内某个元素是否被初始化,它的效率比 array_key_exists() 高4倍左右$a = 'test';$b = array('key1' => 'value1...

weixin_39915078的博客 516

php如何判断0和空

函数对0的判断 1 2 3 4 5 $cast_id = 0; var_dump(strlen($cast_id)); //1 var_dump(empty($cast_id)); // true var_dump(isset($cast_id)); //true var_dump(is_null($cast_id));//false 对空的判断 1 2 3 4

进阶之旅 2998
上一篇: HTTP Session和Cookie工作原理
下一篇: 我也学php:编码规范/翻译自PSR
ColZer
博客等级 码龄14年 42粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值