博客列表 >变量的作用域与检测方法-2018年4月12日

变量的作用域与检测方法-2018年4月12日

笨鸟先飞
笨鸟先飞原创
2018年04月14日 18:58:44608浏览

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文件中,都是会自动生成,不用用户手工去创建。

运行实例 »

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



手写代码:作业图片IMG_3070_meitu_1.jpg

作业图片IMG_3071_meitu_2.jpg

作业图片IMG_3072_meitu_3.jpg

作业图片IMG_3073_meitu_4.jpg

作业图片IMG_3074_meitu_5.jpg

作业图片IMG_3075_meitu_6.jpg

作业图片IMG_3076_meitu_7.jpg

作业图片IMG_3077_meitu_8.jpg

作业图片IMG_3078_meitu_9.jpg

作业图片IMG_3079_meitu_10.jpg

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