一:is_null(),empty(),isset()三者知识点:
1.is_null()函数判断什么时候返回true
1.1已声明,未赋值,默认为null
1.2已声明,并赋值为null
1.3使用unset($var),$var变为null
总结:不存在,未赋值,值为null,is_null()会返回true
2.empty()函数判断什么情况被认为是空的
2.1 空字符串,空数组
2.2 null
2.3 0,‘0’,false
3.isset()函数是null的反操作
变量已声明且不为null,就返回true
实例
/** * is_null()什么时候返回true * 1,已声明,未赋值,默认为null * 2,已声明,直接赋值为null * 3,unset($var),$var=null * 总结:不存在/未赋值/值为null,返回true */ $val1; $val2=null; $val3='php'; unset($val3); @var_dump(is_null($val1) ? true :false); var_dump(is_null($val2) ? true :false); @var_dump(is_null($val3) ? true :false); /** * empty():什么情况会被认为是空的 * 1,空字符串,空数组 * 2,null * 3,0/'0'/false */ $str1=''; $str2=[]; $str3=null; $str4=0; $str5='0'; $str6=false; $str7='php'; echo '<hr color="red">'; var_dump(empty($str1) ? true : false); var_dump(empty($str2) ? true : false); var_dump(empty($str3) ? true : false); var_dump(empty($str4) ? true : false); var_dump(empty($str5) ? true : false); var_dump(empty($str6) ? true : false); var_dump(empty($str7) ? true : false); echo '<hr color="yellow">'; /** *isset()是null的相反操作 * 总结:变量存在且不为null,返回true */ $domain = 'www.php.cn'; $name = null; $obj; //@var_dump($var); var_dump(isset($var)); var_dump(is_null($var)); var_dump(empty($var)); //var_dump(isset($domain)); //var_dump(isset($name)); //var_dump(isset($obj)); echo '<hr color="green">'; $page = isset($_GET['p']) ? $_GET['p'] : 1; echo $page; /** * 总结: 1.变量有两种状态:已声明和未声明 * 2.对于已经声明过的变量也有两种状态:已赋值和未赋值 * 3,变量可能会被赋的值有三种:null,空,非空值 * 3.1 null is_null() * 3.2 空 empty() * 3.3空或非空 isset() * * 基本原则 * 1.对于未声明只能用isset()进行判断 * 2,对于已声明,为空用empty(),是否初始化了用is_null() */ echo '<hr color="gray">'; //第一种场景:变量未声明 //$a未声明 var_dump(isset($a) ? true : false ); //实例:分页显示数据,如果当前的url地址中有分页变量p,输出指定页,如果没有默认为第1页 $page = isset($_GET['p']) ? $_GET['p'] : 1 ; echo $page; @var_dump(is_null($a) ? true : false); var_dump(empty($a) ? true :false); //第二种场景:变量已经赋值 $name ='www.php.cn'; $b = ''; $c = null; echo '<hr color="black">'; var_dump(isset($name)); var_dump(empty($b)); var_dump(is_null($c));
运行实例 »
点击 "运行实例" 按钮查看在线实
二:变量作用域知识点:
/**
* 变量作用域
* 作用域只有三个:
* 1,全局:函数之外创建的
* 2,局部:函数内创建的
* 3,静态:函数内创建的,仅在函数中使用
*/
$siteName = 'php中文网';
//全局变量数组
//$GLOBALS['siteName'] 超全局变量
function hello(){
global $siteName;//使用关键字global,就可以使用全局变量
//函数内不能直接访问全局变量的
$userName ='小张';
// return '欢迎来到'.$siteName.',我是:'.$userName;
return '欢迎来到'.$GLOBALS['siteName'].',我是:'.$userName;
}
echo hello();
//echo $userName;
//静态变量
function myStatic(){
static $num =1; //在函数内部只被赋值一次。
return '第'.$num.'次输出'.$num++.'<br>';
}
echo '<hr color="yellow">';
echo myStatic();
echo myStatic();
echo myStatic();
echo myStatic();
echo myStatic();
//超级全局变量$_SERVER,$_COOKIE,$_SESSION,$_GET,$_POST,$_PUT,$_REQUEST
//直接使用,不需要声明
//超全局变量是系统预定义的,在用户创建的每一个php文件中,都会自动创建,不用用户手动去创建。
//是跨作用域的
echo '<hr color="red">';
echo '我的姓名是:'.$_GET['name'];
//在函数中引用超全局变量
function sayName(){
return '我的姓名是:'.$_GET['name'];
}
echo '<hr color="red">';
echo sayName();