博客列表 >0412作业-变量检测与作用域

0412作业-变量检测与作用域

麦小糖的博客
麦小糖的博客原创
2018年04月15日 19:54:03664浏览

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

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