PHP如何区分未定义,null

今天遇到群里一个人提的问题,isset无法区分未定义和null怎么办?

下面是代码。

<?php
$b = null;
$c = ‘‘;
$arr = get_defined_vars();

if(!isset($a) && !array_key_exists(‘a‘, $arr)){
    echo ‘变量未定义‘;
}else if($a === null){
    echo ‘变量已定义,但变量为空‘;
}else{
    echo ‘变量已定义且变量不为空‘;
}

echo ‘<br />‘;

if(!isset($b) && !array_key_exists(‘b‘, $arr)){
    echo ‘变量未定义‘;
}else if($b === null){
    echo ‘变量已定义,但变量为空‘;
}else{
    echo ‘变量已定义且变量不为空‘;
}

echo ‘<br />‘;

if(!isset($c) && !array_key_exists(‘c‘, $arr)){
    echo ‘变量未定义‘;
}else if($c === null){
    echo ‘变量已定义,但变量为空‘;
}else{
    echo ‘变量已定义且变量不为空‘;
}

时间: 2024-10-26 15:07:21

PHP如何区分未定义,null的相关文章

SCRIPT5007:无法获取属性“show”的值,对象为null或未定义

1.错误描述 SCRIPT5007:无法获取属性"show"的值,对象为null或未定义            dojo.js,行15.字符11808 2.错误原因    require(["dijit/registry"],function(registry){        registry.byId("id").show();    }); 3.解决办法 SCRIPT5007:无法获取属性"show"的值,对象为null

在datagrid中,IE浏览器报错:SCRIPT5007: 无法获取属性&ldquo;rowspan&rdquo;的值: 对象为 null 或未定义

项目总采用datagird时,产生界面如下图原本标题上有功能按钮,此时消失   错误:SCRIPT5007: 无法获取属性"rowspan"的值: 对象为 null 或未定义, 造成这种错误的原因大致为:(1) 可能是在datagrid里面下的frozenColumns:[[ {......}]]或者是columns:[[{...},{...}]]   {...}之间多一个逗号(,) 查找原因为:columns定义时中 某个位置多写了 逗号, 仔细检查一下. 实际效果为: 误区:并非是

IE开发人员工具显示异常,IE加载百度地图,BMap“未定义”

现象:IE开发人员工具,打开界面("网络选项卡")一片空白. 解决:点击Internet选项-高级-重置,重启电脑(有提示). 现象:IE加载百度地图,BMap"未定义", 解决:上面的重置后,重启浏览器,意外地百度地图可以用了.( 现象: http://api.map.baidu.com/api?  响应出现问题,没有继续加载http://api.map.baidu.com/getscript?v=2.0&ak= ) 这里还可以参考这篇博文(这个原来也设置

.NET4.0 __doPostBack未定义

方法一.浏览器设置成兼容模式. 方法二.安装服务器版的.Net40的补丁.http://download.csdn.net/detail/5653325/6642051 方法三.点击VS的工具菜单-->库程序包管理器-->程序包管理器控制台(如果没有“库程序包管理器”的菜单,就先点那个“扩展管理器”,安装一个叫“NuGet程序包管理器”,然后就会有了.),点击后下面会出现一个连接PowerShell的控制台,等控制台加载完毕后输入 install-package App_BrowsersUpd

__doPostBack未定义

工作时遇到这一问题,在网上找了一下解决方法,分享给大家. 方法一.浏览器设置成兼容模式. 方法二.安装服务器版的.Net40的补丁.http://download.csdn.net/detail/5653325/6642051 方法三.点击VS的工具菜单-->库程序包管理器-->程序包管理器控制台(如果没有"库程序包管理器"的菜单,就先点那个"扩展管理器",安装一个叫"NuGet程序包管理器",然后就会有了.),点击后下面会出现一个连

jQuery中的关于$的未定义

1.在初学jQuery时,刚开始做好的一段简单的jQuery代码运行完成后,为了简便合理,把它放在了重新建的一个文件夹下,在运行时总是出现$未定义. 这是一个关键点:在jQuery中,一定要确保引用文件的位置在你所jQuery代码文件的位置之后,当我换回之后.就不再报错了. 问题感悟:1.在遇到问题时,要想一想自己是哪里记错了,才能有所感悟.多查多看多想...

IE10、IE11出现“__doPostBack未定义”的解决办法。

方法一:浏览器设置成兼容模式,这个是超级掩耳盗铃方法,你就没想过其他人也会出这个问题. 方法二.安装服务器版的.Net40的补丁.http://download.csdn.net/detail/5653325/6642051 方法三.点击VS的工具菜单-->库程序包管理器-->程序包管理器控制台(如果没有“库程序包管理器”的菜单,就先点那个“扩展管理器”,安装一个叫“NuGet程序包管理器”,然后就会有了.),点击后下面会出现一个连接PowerShell的控制台,等控制台加载完毕后输入 ins

angularjs 遇见$scope,xxx=function()报错为该函数未定义

本包子今天遇见一个问题,就是明明写了$scope,xx=function()但是报错了,报错显示是该函数未定义,我就很着急的先将函数写成一个全局函数,就没问题,等下午有空的时候寻思了一下,为什么全局就行呢,后来尝试将之前写的$scope.xxx=function()放在最上面,发现就没有报错了,才明白过来,这个angularjs中的函数原来是有执行的顺序的,写调用方法的时候,最好写在上面,so de si nei! 自己基本功还是很不扎实,得多多锻炼啊

0x800a1391-Microsoft Jscript &quot;JSON未定义&quot;

本人在进行调试代码是遇到以下问题: 在运行到var result = JSON.parse(data);这句时,报错:JSON未定义.如下图: 可是前几天运行还好好的,怎么突然就报错了呢? 经过查找发现,原来是ie浏览器的浏览模式出的鬼. 报错时的ie浏览模式是这样的:. 解决方法:把”ie9兼容性视图模式“改为“ie9模式”就可以了.