问题描述:这是我在跟flash对接的时候出的问题,问题是这样的我在php中定义了一个数组$arr=array('key'=>null);

as程序员说他的接收到的是'null';

这不是我想提醒自己的,我想提醒自己的是实用但又容易混淆的那些判断

isset();判断变量是否定义

empty();判断变量是否为空

is_null();判断变量是否为null

==        判断2个变量是否相等

===     判断2个变量时候相等且类型相同

上面这些很好理解,但是在加上下面那些变量值呢?

$var = 0 ;

$var = '0';

$var = null;

$var = 'null';

$var = '';

那么下面列个表吧:

 

判断那些刁钻的值
 isset($var)empty($var)is_null($var)
$var = 0ttf
$var = '0'ttf
$var = nullftt
$var = 'null'tff
$var = ''ttf

可能有人觉得$var = '0';这个参数很奇葩,但是我要说的是$var='0';用的真的很多,因为在用表单(form)传值的时候所有的变量都是转成字符串,所以上面个表格可以帮助你在接受$_REQUEST[];的值得时候更能这是准确的给出判断条件;

还有看了上面$var=0;与$var='0';通过函数判断出来的结果都一样,但是他们的区别在于

0=='0' 为true  而0==='0';为false;也就是类型不一样

而$var=null跟$var='null';的区别也显而易见了;

还有一点就是$_REQUEST[],$_POST[],$_GET[],

举个列子:isset($_POST['key'])这个可以很好的解决php的常见的警告;就是在你接收一个传过来的值之前先用isset()判断下;

这是因为这些全局变量都是数组,当form传值过来的时候就相当于定义了这个数组里面的key跟value,所以用isset()判断的时候存在key则isset($_POST['key'])为true ,不存在的则为false;

isset()不管你$_POST['key']是什么只要存在key就为true;

所以再加上empty()对$_POST['key']进行判断的话就能个准确的判断出变量是否为空且能避免php的警告!