今天看到了这里,有一些平时不在意的地方。记录下来。
一、运算符的优先级
其实我不是很在意这个事情,必要的东西都是走括号的。有些东西你不常用,别人也不常用。那么你写出来会浪费别人读代码的时间。不如老老实实用括号来的清晰。
二、??和?:
?? null合并运算符(Null Coalescing Operator),在php7中生效。
isset():检测变量是否设置,并且不是 NULL。
(expr1) ?? (expr2) 相当于isset(expr1)为真,返回expr1;为假,返回expr2;
<?php
// Example usage for: Null Coalesce Operator
$action = $_POST['action'] ?? 'default';
// The above is identical to this if/else statement
if (isset($_POST['action'])) {
$action = $_POST['action'];
} else {
$action = 'default';
}
?>
?: 三元运算符(Ternary Operator),三元运算符的缩写。
(expr1) ?: (expr2) 相当于(expr1)为真,返回expr1;为假,返回expr2;
因为false,0,‘’都可以用empty校验,所以也相当于empty(expr1)为真,返回expr2;为假,返回expr1;本质上它是 (expr1) ? (expr1) : (expr3)的简写形式。
<?php
// Example usage for: Ternary Operator
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];
// The above is identical to this if/else statement
if (empty($_POST['action'])) {
$action = 'default';
} else {
$action = $_POST['action'];
}
?>
三、执行运算符(Execution Operators)
PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!(这里是1左边的键位)PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符“`”的效果与函数shell_exec() 相同。
<?php
$output = `date`;
echo "Current date of your system: $output";
?>