批改状态:合格
老师批语:
is_null() , empty() , isset()
<?php
echo '<h3>is_null() , empty() , isset()</h3>';
echo '<hr color="red">';
// 一、is_null()什么时候会返回true?
// 1.变量已经声明但未赋值(未初始化),默认就是null
// 2.给变量直接初始化为null:$a = null;
// 3.unset($var),当前$varw为null(相当于删除变量值)
// 总结:不存在/没赋值/值为null 则返回true
$var1;//变量已声明,未初始化
$var2 = null;//变量已声明,初始化为null
$var3 = 'php';//变量已声明,并初始化为非null
$var4 = '';
unset($var3);
@var_dump((is_null($var1) ? true : false));
// @var_dump(is_null($var1));
var_dump((is_null($var2) ? true : false));
//在外用unset($var)
@var_dump((is_null($var3) ? true : false));
var_dump((is_null($var4) ? true : false));
// 二、empty()【空】
// 什么情况会被认为是enpty()
// 1.空字符串,空数组
// 2.null{null就是空,但空不一定是null}
// 3.0 / '0' /false
$str1 = '';
$str2 = [];
$str3 = '0';
$str4 = 0;
$str5 = null;
$str6 = false;
$str7 = 25;
echo '<hr>';
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));
// 思考:判断用户是否在文本框输入了内容:is_null还是empty?
// 答案:empty
// 文本框的默认值就空:vaule='';所以用empty()
echo '<hr>';
// isset()是null的相反操作
// 总结:变量存在且不为null,返回true
$domain = 'www.tb.com';
$name = null;
$job;
var_dump(isset($domain ));
var_dump(isset($name));
var_dump(isset($job));
// 总结:
// 1.变量就二种状态,已声明和未声明
// 2.对于已经声明过的变量也有二种状态:已赋值,未赋值
// 3.变量可能会被赋值的三种:null, 空 , 非空值
// 3.1 null 用 is_null()
// 3.2 空 用 empty()
// 3.3 空或非空 用 isset()
// 基本原则:
// 1.对于未声明的只能用isset()进行判断
// 2.对于已声明,为空用empty(),是否初始化了用is_null()
echo '<hr color="red">';
// 第一种场景:变量未声明
// $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);
// 第二种场景:变量已经赋值
$a = 'www.tb.com';
$b = '';
$c = null;
echo '<hr color="red">';
var_dump(isset($a));//判断有无
var_dump(empty($b));//非空
var_dump(is_null($c));//null
//如果说不确定变量最终是什么类型的时候,建议用null进行初始化点击 "运行实例" 按钮查看在线实例
变量的作用域:
<?php
echo '<h3>变量的作用域</h3>';
echo '<hr color="red">';
// 作用域只有三个:
// 1.全局:函数之外创建的
// 2.局部:函数内创建的
// 3.静态 :函数内创建的,仅在函数中使用
$siteName = 'www.qq.com'; //全局的
//全局变量数组
// $GLOBALS['siteName']
// 函数:是脚本中具有特定功能的代码段,可以重复调用
// 基本语法:
// 1.声明:function function(arg) { #code }
// 2.表达式:$funcName = function(args) { #code }
// 调用:按明调用 funcName(args)
function good(){
//函数内部是不能直接访问全局变量
$userName = '哈哈是哈哈'; //局部变量
// global $siteName;
return '欢迎来到'.$GLOBALS['siteName'].'我叫:'.$userName;
// return '欢迎来到'.$siteName.'我叫:'.$userName;
}
echo good();
echo '<hr color="red">';
//静态变量
function mystatic(){
static $num = 1;
return $num.'个月出去旅游'.$num++.'次'.'<br>';
}
echo mystatic();
echo mystatic();
echo mystatic();
echo mystatic();
echo mystatic();
echo mystatic();
// 超级全局变量:$_SERVER,$_COOKIE,$_GET,$_POST,$_REQUEST,$_SESSION
// $_REQUEST=$_GET+$_POST+$_COOKIE
echo '<hr color="yellow">';
// 可以在全局直接引用超全局变量
echo '我叫hello:'.$_GET['name'];
echo '<hr color="yellow">';
//在函数中引用超全局变量
function sayName(){
return '我叫hello:'.$_GET['name'];
}
echo sayName();
//超全局变量是系统自定义的,在用户创建的每一个php文件中,都是会自动生成,不用用户手工去创建。点击 "运行实例" 按钮查看在线实例
手写代码:









Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号