批改状态:合格
老师批语:
<?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();
?>点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号