Blogger Information
Blog 14
fans 0
comment 0
visits 8538
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
is_null(),empty(),isset()以及作用域---4.13
弗洛加特的博客
Original
542 people have browsed it

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

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!