在写php程序时,我们通常用isset()来检测变量是否定义,但其中存在一个问题,看手册上对该方法的描述:

bool isset ( mixed $var [, mixed $... ] )

检测变量是否设置,并且不是 NULL

如果已经使用 unset() 释放了一个变量之后,它将不再是 isset() 。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE 。同时要注意的是一个 NULL 字节("\0")并不等同于 PHP 的 NULL 常数。

If multiple parameters are supplied then isset() will return TRUE only if all of the parameters are set. Evaluation goes from left to right and stops as soon as an unset variable is encountered.

也就是被初始化成 NULL的变量,用改方法检测时也会返回false,例如:

<?php$var = null;
$arr['key'] = null;if(isset($var)){echo 'set<br>';
}else{echo 'no set<br>';
}if(isset($arr['key'])){echo 'set<br>';
}else{echo 'no set<br>';
}

运行结果:

no set
no set

当然这种情况是比较少见的,我们平时在初始化变量时尽量避免NULL,但有时在取数据库时无可避免的取回NULL,这种情况我们可以用array_key_exists()函数来判断某个字段是否被取出来了,比如:

<?php$arr['key'] = null;if(array_key_exists('key' , $arr)){echo 'set<br>';
}else{echo 'no set<br>';
}if(array_key_exists('key2' , $arr)){echo 'set<br>';
}else{echo 'no set<br>';
}

运行结果:

set
no set
bool array_key_exists ( mixed $key , array $search )

array_key_exists() 在给定的 key 存在于数组中时返回 TRUEkey 可以是任何能作为数组索引的值。 array_key_exists() 也可用于对象。

php用isset()判断变量是否定义的存在的坑相关推荐

  1. php 检测 变量是否设置,php判断变量是否定义

    isset()判断变量是否已设置 格式:bool isset ( mixed var [, mixed var [, ...]] ) 1.若变量不存在则返回 FALSE 2.若变量存在且其值为NULL ...

  2. python变量名是否合法_Python判断变量名是否合法的方法示例

    如何判断一个python表达式是否合法? 换句话说合法的python表达式的通性是什么?活得糊涂的人,容易愉悦:活得清醒的人,容易烦恼. a=input() try:b=eval(a);print(& ...

  3. python判断变量是否被定义

    if '变量名' not in dir():print('该变量未被定义') 例如:判断变量 num是否被定义,如果没被定义则输出未定义 if 'num' not in dir():print('未定 ...

  4. ***PHP中判断变量为空的几种方法

    总结PHP中,"NULL" 和 "空" 是2个概念. isset  主要用来判断变量是否被初始化过 empty  可以将值为 "假".&qu ...

  5. 【 Makefile 编程基础之三】详解 Makefile 变量的定义规则使用!

    本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/gcc-makefile/770.html ☞ ...

  6. java 定义类变量初始化吗_Java的变量有哪些类型?变量如何定义?如何初始化?请说明理由并举例_学小易找答案...

    [单选题]根据金杯萃取理论,咖啡萃取比较适合的参数是: (2.9分) [判断题]高分化的鳞状细胞癌恶性程度高,低分化的鳞状细胞癌恶性程度低. ( ) [简答题]第 3-4 节之间的关系是什么?在全诗结 ...

  7. JavaScript判断变量数据类型

    一.JS中的数据类型 1.数值型(Number):包括整数.浮点数. 2.布尔型(Boolean) 3.字符串型(String) 4.对象(Object) 5.数组(Array) 6.空值(Null) ...

  8. go语言中变量的定义和使用

    Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性.在数学概念中,变量表示没有固定值且可改变的数.但从计算机系统实现角度来看,变量是一段或多段用来存储数 ...

  9. Python基础day01【软件安装、变量的定义和使用、数据类型、标识符和关键字、输入输出、数据类型转换、运算符、PEP 8 规范】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员]      学习目标: 能够说出计算机有哪两部分组成 能够说出操作系统的作用 能够说出编程语言的作用 ...

最新文章

  1. 用Spring Web Flow和Terracotta搭建Web应用
  2. Vue:Elementui中的Tag与页面其它元素相互交互的两三事
  3. Tomcat9 访问 Manager App
  4. openresty开发系列16--lua中的控制结构if-else/repeat/for/while
  5. 图解设计模式:抽象工厂
  6. PetShop之ASP.NET缓存--three
  7. 本地安装 SAP WebIDE 的本地存储研究
  8. Visual Studio 2010授权修改
  9. 学习Windows2008——常用工具及命令(包括核心版部分命令)
  10. 程序员谈谈我的职场观(一)
  11. 机器学习人才的职业薪酬也发展
  12. Mybatis-学习笔记(N)mybatis-generator 生成DAO、Mapper、entity
  13. 交换机的接口类型和Ensp中线缆类型
  14. java wsimport 调用_Java如何基于wsimport调用wcf接口
  15. ASP.net开发环境配置说明手册
  16. 高中数学:数列求和的8种常用方法(最全)
  17. w7计算机文件夹打开怎么设置密码,win7电脑文件夹怎么设置密码
  18. 记一次计算机课作文,记一次课堂活动作文500字
  19. 手机大厂开始走上AI芯片 将来掀起AI应用
  20. Anbox之构建android.img(三)

热门文章

  1. 品牌增删改查案例,登录以及注册
  2. python的matmul_浅谈keras中的batch_dot,dot方法和TensorFlow的matmul
  3. static_cast和dynamic_cast的区别
  4. 对于文本编辑器/IDE的一些看法
  5. 5G打开“视频社会化”闸门,视频手机后浪已至
  6. ADS2020linux版本安装,Advanced Design System (ADS) 2020安装许可授权详细教程(附下载)
  7. 部分地区信息学中小学组试卷目录
  8. 32位系统处理64位数据
  9. TCP长连接和短连接的区别
  10. C/C++htonl(), ntohl(), ntohs(),htons()