|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你发奋努力,熟悉了安全方面的问题,然后又设计了一些程序,感觉还不错。 1、举例申明
A.一个变量没有界说,咱们该怎样去判别呢
复制代码 代码以下:
<?php
#不存在$test 变量
$isset= isset($test)?"test is define!":"test is undefine!";
echo "isset:$isset\r\n";
$empty=!empty($test)?"test is define!":"test is undefine!";
echo "empty:$empty\r\n";
$is_null=is_null($test)?"test is define!":"test is undefine!";
echo "is_null:$is_null\r\n";
测试了局是:
了局出来了:empty,isset起首城市反省变量是不是存在,然后对变量值停止检测。而is_null 只是直接反省变量值,是不是为null,因而假如变量不决义就会呈现毛病!
B、看下各自吸收的参数是甚么?
isset函数参数:
<?php
$test=100;
echo isset($test),isset(100),$isset($b=100);
<br />
<b>Parse error</b>: parse error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or "$" in <b>PHPDocument3</b> on line <b>3</b><br />
empty函数参数:
<?php
$test=100;
echo empty($test),empty(100),empty($b=100);
<br />
<b>Parse error</b>: parse error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or "$" in <b>PHPDocument3</b> on line <b>3</b><br />
is_null函数参数:
<?php
$test=100;
echo is_null($test),is_null(100),is_null($b=100);
运转了局:没有任何毛病。
对照了局出来了:empty,isset输出参数必需是一个变量(php变量是以$字符开首的),而is_null输出参数只需是可以有前往值就能够。(常量,变量,表达式等)。在php手册外面,关于他们解析是:empty,isset 是一个言语布局而非函数,因而它没法被变量函数挪用。
2、归纳综合总结isset,empty,is_null区分:
方才引见的:反省变量,和参数类型,这个是这3个函数分歧的地方的基本,也是最轻易被无视的。看到网上有良多对这个3个函数停止对照文章。很少触及这些。上面我要说的,是在都反省已存在变量情形下,分歧的地方。
实例:
复制代码 代码以下:
<?php
$a=100;
$b="";
$c=null;
//isset反省
echo "isset","\$a=$a",isset($a)?"define":"undefine","\r\n";
echo "isset","\$b=$b",isset($b)?"define":"undefine","\r\n";
echo "isset","\$c=$c",isset($c)?"define":"undefine","\r\n";
unset($b);
echo "isset","\$b",isset($b)?"define":"undefine","\r\n";
$b=0;
echo "\r\n\r\n";
//empty反省
echo "empty","\$a=$a",!empty($a)?"no empty":"empty","\r\n";
echo "empty","\$b=$b",!empty($b)?"no empty":"empty","\r\n";
echo "empty","\$c=$c",!empty($c)?"no empty":"empty","\r\n";
unset($b);
echo "empty","\$b",!empty($b)?"no empty":"empty","\r\n";
$b=0;
echo "\r\n\r\n";
//is_null反省
echo "is_null","\$a=$a",!is_null($a)?"no null":"null","\r\n";
echo "is_null","\$b=$b",!is_null($b)?"no null":"null","\r\n";
echo "is_null","\$c=$c",!is_null($c)?"no null":"null","\r\n";
unset($b);
echo "is_null","\$b",is_null($b)?"no null":"null","\r\n";
经由过程下面这个复杂测试,咱们可以大体晓得,当一个变量存在情形下:isset,empty,is_null检测,失掉值情形了。下面没有举例更多变量。其实测试发明:
empty
假如 变量 长短空或非零的值,则 empty() 前往 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var、不决义; 和没有任何属性的对象都将被以为是空的,假如 var 为空,则前往 TRUE。
isset
假如 变量 存在(非NULL)则前往 TRUE,不然前往 FALSE(包含不决义)。变量值设置为:null,前往也是false;unset一个变量后,变量被作废了。注重,isset关于NULL值变量,特别处置。
is_null
检测传入值【值,变量,表达式】是不是是null,只要一个变量界说了,且它的值是null,它才前往TRUE . 其它都前往 FALSE 【不决义变量传入后会失足!】.
疑问:怎样判别一个变量被设置了,而且值为NULL呢?
经由过程下面对照,估量人人与我一样,会有这个成绩显现在脑海外面。 检测一个变量是不是是null 可以用:is_null,但假如变量不决义用它检测会失足。因而,咱们想到,检测变量是不是界说可以用:isset,然而假如一个变量值是:null, 则它会前往false . 哈哈,这个成绩怎样处理呢?守候人人分享……
反省变量存在,而且值为NULL.
复制代码 代码以下:
<?php
function checkNull($a)
{
if(array_key_exists($a,$GLOBALS))
{
global $$a;
if(is_null($$a))
return true;
}
return false;
}
$test=null;
var_dump(checkNull("test"));
var_dump(checkNull("test1"));
PHP于1994年由Rasmus Lerdorf创建,刚刚开始是Rasmus Lerdorf为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。 |
|