![]() |
捣蛋的土豆 · 南阳市12345热线“为民惠企”典范案例选登 ...· 1 周前 · |
![]() |
谦逊的猴子 · 常见问题 - Lenovo ...· 3 周前 · |
![]() |
个性的跑步机 · 抗震救灾优秀共产党员事迹_共产党员网· 1 月前 · |
![]() |
坏坏的柿子 · 沈阳中海爱丁堡基本信息,售楼处电话,开发商, ...· 1 年前 · |
![]() |
正直的作业本 · jqgrid在URL参数中不刷新新的值。· 1 年前 · |
另一个条件运算符是"?:"(或三元)运算符 。
(expr1) ? (expr2) : (expr3)对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
以下实例中通过判断 $_GET 请求中含有 user 值,如果有返回 $_GET['user'],否则返回 nobody:
// 普通写法 $username = isset ( $_GET [ ' user ' ] ) ? $_GET [ ' user ' ] : ' nobody ' ; echo $username , PHP_EOL ; // PHP 5.3+ 版本写法 $username = $_GET [ ' user ' ] ?: ' nobody ' ; echo $username , PHP_EOL ;注意: PHP_EOL 是一个换行符,兼容更大平台。
在 PHP7+ 版本多了一个 NULL 合并运算符 ?? ,实例如下:
// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值 $username = $_GET [ ' user ' ] ?? ' nobody ' ; // 类似的三元运算符 $username = isset ( $_GET [ ' user ' ] ) ? $_GET [ ' user ' ] : ' nobody ' ;PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=> 。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。
语法格式如下:
$c = $a <=> $b;
解析如下:
如果 $a > $b , 则 $c 的值为 1 。实例如下:
// 整型 echo 1 <=> 1 ; // 0 echo 1 <=> 2 ; // -1 echo 2 <=> 1 ; // 1 // 浮点型 echo 1 .5 <=> 1 .5 ; // 0 echo 1 .5 <=> 2 .5 ; // -1 echo 2 .5 <=> 1 .5 ; // 1 // 字符串 echo " a " <=> " a " ; // 0 echo " a " <=> " b " ; // -1 echo " b " <=> " a " ; // 1下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
说明 :左 = 从左到右,右 = 从右到左。
var_dump ( $c ) ; // 这里的 $c 为 int 值3,而不是 boolean 值 true $d = $a || $b ; var_dump ( $d ) ; // 这里的 $d 就是 boolean 值 true以上实例输出结果为:
int(3) bool(true)我们通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。
// 括号优先运算 $a = 1 ; $b = 2 ; $c = 3 ; $d = $a + $b * $c ; echo $d ; echo " \n " ; $e = ( $a + $b ) * $c ; // 使用括号 echo $e ; echo " \n " ;以上实例输出结果为:
5===5 // 返回 true 5==="5" // 返回 falsexiaoxie
211***8399@qq.com
佚名灬小涛
770***785@qq.com
Leo
206***2241@qq.com
南宫晟醺
132***4430@qq.com
m01st
jqy***701724@gmail.com