PHP中isset()函数想必是每个PHPer最常用的一个函数了,它更多是和三元表达式组合着使用,每次在验证数据的有效性时,都是需要它们组合来发挥作用,下面我们来介绍下它们。
简介
看看PHP手册对isset()的介绍
isset — 检测变量是否设置
bool isset ( mixed $var [, mixed $... ] )
检测变量是否设置,并且不是 NULL。
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是一个 NULL 字节("0")并不等同于 PHP 的 NULL 常数。
常用的用法
<?php $a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple')); var_dump(isset($a['test'])); // TRUEvar_dump(isset($a['foo'])); // FALSEvar_dump(isset($a['hello'])); // FALSE
三元表达式
(expr1) ? (expr2) : (expr3) ;
表达式 (expr1) ? (expr2) : (expr3) 在 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
另外,PHP7 中,三元表达式有了新的用法:
??是php7新推出的表达式,
$c =$ a ?? $b;等价于$c = isset($a) ? $a : $b;表示如果$a非空,则$c = $a, 如果$a为空,则 $c = $b;
isset() 结合 三元表达式的小技巧用法
当我们想判断某个值存在时,则进行赋值,否则该值不变,我们通常会这么写:
$value = 10;$value = isset($get['value']) ? $get['value'] : $value;
当没有$get['value']时,我们是不做处理,但是上面的写法明显是多了一次赋值操作,那么,结合三元表达式,我们可以写成:
$value = 10;isset($get['value']) ? $value = $get['value'] : $value;
这样,只有当$get['value']存在时,我们才对$value进行赋值处理,当$get['value']不存在时,我们不做任何处理,相对上面的写法,少了一次赋值。
总结
虽然说上面的小技巧在实际应用中优化的效果不是很明显,但是对于计算机来说,就少了一次运算,对程序来说,执行时间相对就节省了一次运算时间。
但是平时我们在编码时,还是以保证程序逻辑正确为主。