博客列表 >PHP 之 is_null(),empty(),isset()方法的使用技巧--2018年04月13日

PHP 之 is_null(),empty(),isset()方法的使用技巧--2018年04月13日

失去过去的博客
失去过去的博客原创
2018年04月13日 18:44:52667浏览

实例

<?php
echo '<h3>3.is_null(),empty(),isset()区别</h3>';
echo'<hr>';
/*
 * 
 * 1.is_null() 什么情况下回出现null 
 *  1.1 变量已经声明但是还未赋值;
 * 	1.2 变量赋值为null;
 * 	1.3变量被销毁之后不存在 unset()会返回true;
 * 
 * 
 * 
 * 
 * */
 //未赋值
$varval1;
@var_dump(is_null($varval1)?true:false) ;//三元运算符语法:  判断条件?正确输出语句:错误输出语句;
echo '<hr>';
//已经赋值 但是值为null
$varval2=null;
var_dump(is_null($varval2)?true:false) ;
echo '<hr>';
$varval3 = 'ceshi';
unset($varval3) ;//变量卸载方法 
@var_dump(is_null($varval3)?true:false) ;
echo '<hr>';
var_dump(is_null(""));//空字符串返回false
echo '<hr>';

/*
 * 2.empty()  什么时候返回true?
 * 	2.1空字符串,空数组
 * 	2.2 null
 * 	2.3 0 / '0' / false
 * 	2.4表单中判断是否为空必须使用empty()方法
 * 
 *  总结 :
 * 	1.如果一个变量不存在 也就是空值 可以使用is_null() or emtpy() 判断
 * 	2.如果一个变量存在但是他的值不影响运行结果则视为空
 * 	3.null 一定是空 但是空不一定是 null 他可能是 0 '0' 或者false 空数组
 * 
 * 
 * 
 * 
 * */
$num1 =  0;
$num2 = "0";
$num3 = null;
$num4 = false;
$num5 = [];
$num6 = '';
$num7 = 'linqin';
var_dump(empty($num1));
echo '<hr color= "red">';
var_dump(empty($num2));
echo '<hr>';
var_dump(empty($num3));
echo '<hr>';
var_dump(empty($num4));
echo '<hr>';
var_dump(empty($num5));
echo '<hr>';
var_dump(empty($num6));
echo '<hr>';
var_dump(empty($num7));
echo '<hr>';
/*
 * 
 * 3.inset()是 null的取反操作
 * 	3.1变量已经存在 且值不为null 返回true  否则为false
 * 
 * 
 * 
 * */
 $isset1= 'php中文网';
 $isset2 = null;
 $isset3;
 $isset4 = 0;
  $isset5 = '';
var_dump(isset($isset1));
var_dump(isset($isset2));
var_dump(isset($isset3));
var_dump(isset($isset4));
var_dump(isset($isset5));
 echo '<hr color="red">';


/*
 * 总结:
 * 		1.变量有两种状态  已经声明  未声明
 * 		2.已经声明的变量也有2种状态: 已经赋值(已初始化) 未赋值(未初始化)
 * 		3.变量可能会被赋值的类型:null 空值 非空值
 * 				3.1 null值  is_null()方法判断
 * 				3.2 空值 empty()
 * 				3.3	空值或非空值 isset()
 * 		基本使用原则:
 * 			1.对于未声明的变量只能使用isset()判断
 * 			2.对于已经申明的变量 为空时 用empty() 是否初始化用is_null
 * 
 * 
 * 
 * 
 * 
 * 
 * */
 //实际使用场景
 
 	//1.变量未声明
 var_dump(isset($abc))? true:false;	
 	//不报错 ,返回false 表示为声明;
 	//实例:分页显示数据的时候 如果当前url中有存在分页变量page则输出指定页面,否则输出第一页
 	$name = isset($_GET['page'])? $_GET['page']:1;
 	echo '<hr>';
	//如果是null 则会返回true 并出现notice 
 	@var_dump(is_null($var)?true:false);
	echo '<hr>';
	//对于empty()来说null就是空 返回的值是true
	var_dump(empty($var)?true:false);
	echo '<hr>';
	
	
//	2.变量已经声明
	$str1 = 'www.baidu.com';
	$str2 = '';
	$str3 = null;	
	var_dump(isset($str1));  //有无判断
	var_dump(empty($str2));  //非空判断
	var_dump(is_null($str3)); //null
	
//	变量的初始化
//	1.在预知变量的类型的情况下 建议使用以下的初始化值
		$num = 0;//数值
		$str = "";//字符串
		$bool = false;//布尔
		$arr = [];//数组
		$obj = null;//对象
//	2.不确定变量最后是什么类型 建议使用null

	
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例 变量的作用域

<?php
/*
 * 变量的作用域
 *   1.全局作用已 //函数体外的变量
 * 		2.局部作用域  //函数体内的变量
 * 			3.静态作用域 // 当一个函数调用完后,它的所有变量都会被删除,如果想要某个局部变量不被删除,那么可以使用static关键字
 * 			
 * */
 //1.全局作用域
 $classname = '三年一班';//全局变量 全局作用域

 //全局变量在自动成为全局数组中的一个键值对 可以使用 $GLOBALS[KEY]的方式声明
$GLOBALS['$classname'] =  '三年一班'; 
echo $GLOBALS['$classname'] ;
echo "<hr>";
  /*函数:
  
   * 1.基本语法: 
   * 	1.1函数声明 :function funcname($args){ #code.
   * ... }
   * 	2.2函数表达式 :$funcname = function($args){#code...}
   * 
   * 2.函数调用
   * 	2.1 按名称调用 funcname($args,$args....);
   *	2.2 调用自身 递归  
   * 		(function($args){#code...})(); 
   * 
   * 
  */	
//2.局部作用域
//		
	function test(){
		//方法1.函数体内是无法直接引用全局变量的 需要通过 global 关键字引入全局变量
		//方法2.使用全局变量函数体$GLOBALS['$classname'] 全局数组的方式获取到全局变量
		//global $classname;//引用全局变量进入函数体内 
		
		$classnum = 52;
		
//		return $classname.'有'.$classnum.'个同学';
		return $GLOBALS['$classname'].'有'.$classnum.'个同学';// 使用全局变量函数体$GLOBALS['$classname'] 全局数组的方式获取到全局变量
		
		$classname = '三年10班';
		//外部无法访问函数体内的变量
	}
echo test();
echo '<hr>';
echo $classname;
echo '<hr>';
//3.静态作用域
	function staticvar(){
		static $num = 1; //函数调用完毕时 所有的变量都会被unset()卸载,如果不想卸载保存在内存中的时候需要 使用static关键字
		echo '第'.$num.'次,输出结果'.$num++;
		
		
	}

staticvar();
echo '<hr>';
staticvar();
echo '<hr>';
staticvar();
echo '<hr>';
staticvar();
//4.超全局变量
//系统内置的变量无需声明 如 $_GET $_POST $_SERVER $_SESSION $_COOKIE $_REQUEST
//全部是数组 跨作用域可以在全局和局部直接使用 超全局是指跨作用域不是跨文件 都是在当前脚本中的
echo '<hr>';
//echo $_GET['name'];
function getname(){
	return '我的名字是'.$_GET['name'];
}
echo getname();
 
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例


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