博客列表 >is_null(),empty(),isset()以及作用域---4.13

is_null(),empty(),isset()以及作用域---4.13

弗洛加特的博客
弗洛加特的博客原创
2018年04月13日 16:12:19550浏览

一: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();

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议