<?php class test{} $a1 = null; $a2 = ""; //$a3 = $a4 = 0; $a5 = '0'; $a6 = false; $a7 = array(); //var $a8; $a9 = new test(); for ($i=1; $i <=9 ; $i++) { $s = 'a'.$i; echo $i . ":"; var_dump(isset($$s)); echo '<br />'; } ec…
近日被问到PHP中empty和isset函数时怎么判断变量的,刚开始我是一脸懵逼的,因为我自己也只是一知半解,为了弄懂其真正的原理,赶紧翻开源码研究研究.经过分析可发现两个函数调用的都是同一个函数,因此本文将对两个函数一起分析. 我在github有对PHP源码更详细的注解.感兴趣的可以围观一下,给个star.PHP5.4源码注解.可以通过commit记录查看已添加的注解. 函数使用格式 empty bool empty ( mixed $var ) 判断变量是否为空. isset bool is…
在使用 php 编写页面程序时,我经常使用变量处理函数判断 php 页面尾部参数的某个变量值是否为空,开始的时候我习惯了使用 empty() 函数,却发现了一些问题,因此改用 isset() 函数,问题不再. 顾名思义,empty() 判断一个变量是否为“空”,isset() 判断一个变量是否已经设置.正是这种所谓的“顾名思义”,令我开始时走了些弯路:当一个变量值等于0时,empty()也会成立(True),因而会发生一些意外.原来,empty() 和 isset() 虽然都是变量处理函数,它们…
<?php $a = array('a'=>1, 'b'=>0, 'c'=>NULL);   echo 'a test by empty: ' , empty($a['a']) ? 'not exist' : 'exist', PHP_EOL; echo 'a test by isset: ' , isset($a['a']) ? 'exist' : 'not exist', PHP_EOL; echo 'a test by array_key_exists: ' , array_…
include()与require()的用途是完全一样的,不一定非得哪个放在最前面哪个放在中间.他们最根本的区别在于错误处理的方式不一样. 1.处理错误的方式: require()一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误 include()一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误. 2.返回值 include有返回值,而require没有 3.引入时间不同: require()通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 r…
empty(), is_null(), isset()真值表(区别) 我们先来看看这3个函数的功能描述 www.111cn.net isset 判断变量是否已存在,如果变量存在则返回 TRUE,否则返回 FALSE. empty 判断变量是否为空,如果变量是非空 或非零 的值,则 empty() 返回 FALSE.换句话说,"" .0 ."0" .NULL .FALSE .array() .var $var; 以及没有任何属性的对象 都将被认为是空的,如果变量为空,…
在使用 php 编写页面程序时,我经常使用变量处理函数判断 php 页面尾部参数的某个变量值是否为空,开始的时候我习惯了使用 empty() 函数,却发现了一些问题,因此改用 isset() 函数,问题不再. 顾名思义,empty() 判断一个变量是否为“空”,isset() 判断一个变量是否已经设置.正是这种所谓的“顾名思义”,令我开始时走了些弯路:当一个变量值等于0时,empty()也会成立(True),因而会发生 一些意外.原来,empty() 和 isset() 虽然都是变量处理函数,它…
通过一个例子来解释一下, $id = 0  empty($id) 的值是true isset($id) 也是true. empty 和isset 处理对象无外乎 未定义常量 .0 .空字符串 如果变量为0 ,empty返回true isset 返回true 如果变量为空字符串,empty返回true isset返回true 如果变量未定义 ,empty返回true isset 返回false isset()只能用于变量 因为传递任何参数都将造成解析错误,若想检测常量是否已设置,可使用defind…
在php脚本中,我们经常要去判断一个变量是否已定义或者是否为空,就需要用到这些函数empty().isset().is_null()和其本身作为参数,下面小段程序做个简要比较 <?php//预定义变量数组:空字符,字符0,数组0,null,布尔false,空数组$arr_var = array('', '0', 0, null, false, array()); foreach ($arr_var as $value) { echo '<br>传入值为:' . $value . '<…
以下内容转载自http://wuxinjie.github.io/php-04/ 从下表可知,empty与if()完全相反,is_null与isset完全相反 isset是语句,is_null是函数,因此isset执行速度远远大于isnull 因为是函数,is_null可以作为可变函数调用,也可以接受函数返回值作为参数,isset统统不行. 同样因为执行速度,建议使用 “=== NULL” 来代替isnull 什么时候用哪个呢?我的建议是哪个方便用哪个. 表达式 gettype() empty(…