实例
<?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(); ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例