问题描述:这是我在跟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 = 0 | t | t | f |
$var = '0' | t | t | f |
$var = null | f | t | t |
$var = 'null' | t | f | f |
$var = '' | t | t | f |
可能有人觉得$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的警告!