Blogger Information
Blog 20
fans 2
comment 0
visits 14966
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
0412作业-变量检测与作用域
麦小糖的博客
Original
662 people have browsed it

1、is_null(),empty(),isset()

实例

<?php
echo "<h2>学习is_null(),empty(),isset()</h2>";
echo '<hr color="green">';

/**
 * is_null()
 * 1.对应变量不存在/未赋值/值为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;
echo "<hr>";
var_dump(empty($st1)?true:false);
var_dump(empty($st2)?true:false);
var_dump(empty($st3)?true:false);
var_dump(empty($st4)?true:false);
var_dump(empty($st5)?true:false);
var_dump(empty($st6)?true:false);


/**
 * isset()是is_null()的相反操作
 * 变量存在且不为null,返回true
 */

$domain = 'www.php.cn';
$name = null;
$age;
echo "<hr>";
var_dump(isset($domain));
var_dump(isset($name));
var_dump(isset($age));

/**
 * 总结:
 * 1. 变量有二种状态: 已声明, 未声明
 * 2. 已声明的变量也有二种状态: 已赋值(初始化), 未赋值(未初始化)
 * 3. 变量可能会被赋值类型: null, 空值, 非空值
 * 		3.1: null值: is_null()
 * 		3.2: 空值: empty()
 * 		3.3: 空值或非空值: isset()
 * 		
 * 基本使用原则:
 * 1. 对于未声明的变量只能使用isset()进行判断
 * 2. 对于已声明的变量,为空判断用empty(),是否初始化判断用is_null()
 */
echo "<hr>";
//第一种场景: 变量未声明
//实例:在分页显示数据的时候,如果当前的url中有分页变量page,则输出指定页,否则就默认输出第一页数据
$page = isset($_GET['p']) ? $_GET['p'] : 1;
echo $page;

// 第二种场景: 变量已声明
$a = 'www.php.cn';
$b = '';
$c;

echo "<hr>";
var_dump(isset($a));
var_dump(empty($b));
@var_dump(is_null($c));

运行实例 »

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

2.作用域

实例

<meta charset="utf-8">
<?php
echo "<h2>变量的作用域</h2>";
echo "<hr>";

/*
 * 作用域只有三个:
 * 1.全局:函数之外创建,仅在当前脚本除函数之外的地方使用;
 * 2.局部:函数内部创建,仅能在函数中使用,外部不可访问;
 * 3.静态:函数内部创建,仅在函数中使用,函数执行完成它的值不丢失;
*/

$siteName = 'php中文网';
function hello()
{
	global $siteName; //引用全局变量
	// 也可以直接使用全局变量数组,不必声明引入
	$userName = 'lucky';
	return "欢迎来到".$GLOBALS['siteName']."我的名字是".$userName;
}
echo hello();

echo "<hr>";

// 静态
// 1.不为静态变量时,输出全部为1,每次都重新赋值
function myStatic()
{
	$num = 1;
	return "第".$num."次输出的是:".$num++."<br>";
}
echo myStatic();
echo myStatic();
echo myStatic();
echo myStatic();
echo myStatic();

echo "<hr>";
// 1.为静态变量时,输出为累加的值,不重新赋值
function youStatic()
{
	static $num = 1;
	return "第".$num."次输出的是:".$num++."<br>";
}
echo youStatic();
echo youStatic();
echo youStatic();
echo youStatic();
echo youStatic();

/*
 * 超全局变量:$_SERVER,$_COOKIE,$_SESSION,$_GET,$_POST,$_REQUEST
 * 1. 属预定义变量,全部是数组,拿来就用,不需要声明;
 * 2. 跨作用域,在全局和局部(函数内部)都可以直接使用;
 * 3. 跨作用域不是跨脚本,所谓超全局,包括全局,都是指在当前脚本文件中。
 */
echo "<hr>";
//直接全局引用
echo "我的名字是:".$_GET['name'];
//也可以在函数中引用
echo "<hr>";
function myName()
{
	return "我的名字是:".$_GET['name'];
}
echo myName();

运行实例 »

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

3.手写作业:

0412作业1.png0412作业2.png

Correction status:qualified

Teacher's comments:
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