烦恼的黑框眼镜 · 孝德南院举办首届业主子女高考升学及参军入伍表 ...· 1 月前 · |
仗义的登山鞋 · 喀喇昆仑之巅,他们用青春热血书写对祖国最清澈 ...· 1 年前 · |
阳刚的小马驹 · 1月22日上市公司晚间公告速递_上市公司_交 ...· 1 年前 · |
玩滑板的牛肉面 · 五菱汽车2022年累销160万辆,纯电动单一 ...· 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