PHP知识点回顾-PHP变量

发布时间:2021-09-04浏览次数:1175 次
一、isset()函数isset()函数用于判断PHP变量是否定义/设置,PHP的变量要么是经过定义的,要么是未被定义的。当把一个值赋值给一个变量,无论这个值是

一、isset()函数

isset()函数用于判断PHP变量是否定义(设置),PHP的变量要么是经过定义的,要么是未被定义的。当把一个值赋值给一个变量,无论这个值是true、false、0、空值或非空值,这个变量都是被设置的。当传递给isset()的变量是经过设置的时,isset()函数均会返回true,反之则返回false。

$a = true;
$b = false;
$c = '';
$d = 0;

var_dump(isset($a));  // true
var_dump(isset($b));  // true
var_dump(isset($c));  // true
var_dump(isset($d));  // true

二、unset()函数

将一个已经被定义(设置)的变量转为未定义的,需要使用到unset()函数,或者为这个变量赋值null。变量、标量、数组和对象都可以传递给unset()函数。

可以同时给unset()函数传递多个变量,一起销毁他们。

$b = null;
unset($c,$d); // 可同时传递多个参数(变量、数组等)
var_dump(isset($c)); // false
var_dump(isset($d)); // false

空的变量,是指其值可以转换成布尔值false的变量,包括:整型数0,双精度型数0.0,空字符串,字符串0,布尔值false,NULL以及没有元素的数组和没有属性的对象,除此之外,其他的变量都是非空的(包括字符串 “  ”,字符串0也均为非空的)。

var_dump(empty(0)); // true
var_dump(empty(0.0)); // true
var_dump(empty("")); // true
var_dump(empty("0")); // 字符串0 ,true
var_dump(empty(false)); // true
var_dump(empty([])); // true

var_dump(empty("00")); // false
var_dump(empty(" ")); // false

一个只包含一个空白变量的值要么可以转换为false,要么可以转换为true。空值和false之间的区别在于:只有对于变量来说才能有空值。常量以及由函数返回的值可以是false,但不能是空值。

三、== 和 = 的区别

比较一个变量和常量,把常量放在比较操作符的左侧会强制按常量的类型进行比较:

// 比较
$a = "12";
var_dump(12 == $a); // true
var_dump($a == 12); // true  不建议使用这种写法

// 把常量放在比较操作符的左侧会强制按常量的类型进行比较
$b = '0';
var_dump($b == 0); // true
$b == 'abc';
var_dump($b == 0); // true
var_dump(0 == $b); // true

当你将一个整型数和一个可能是整型数也可能是字符串的变量进行比较时,会导致一些问题。当$b 为0 时, 0 == $b 返回true,但是当$b是字符串‘abc’时,该比较表达式仍然可以返回true,因为,一个整型数(0)位于比较表达式的左侧时,PHP会在进行比较之前把右侧的操作数(字符串abc)先转换为一个整型数。为了避免此类问题的发生,可以使用等同操作符,0 === $b。

在一些知名的开源程序里面,我们经常会见到 if(true == xxx){…} 即是这种思想

把常量放在赋值操作符的左侧会触发一个解析操作:

// 赋值
var_dump($b = 12);
var_dump(12 = $b); // 提示解析错误,Parse error

四、为变量设定默认值

在编程时,经常会遇到为变量指定的默认值被来自表单的字段或环境变量的值覆盖的情况,在这种情况下,需要使用isset()来进行判断,如果不使用这个函数,那么变量的非默认值就不能是0或者其他能转换为false的值。

if (!isset($c)) {
    $c = 'xxx';
}
$c = isset($c) ? $c : 'xxx';

// 对比以下赋值语句
// 如果 $c 是0或者false,$c 最终都会被赋值为'xxx',但是0或者false对于$c来说,也是一个有效的值。
$c = $c ? $c : 'xxx' 

在检测数组是否经过设置时,需要使用array_key_exists()函数。

$car = array_key_exists('cars',$_REQUEST) ? $_REQUEST['cars'] : "default";

array_key_exists()和isset()函数的一个区别是:当数组中存在一个键对应的值为null时,array_key_exists()返回true,而isset()返回false。

标签:PHP变量
扫一扫,在手机上查看