📜  php ?: - PHP (1)

📅  最后修改于: 2023-12-03 15:03:34.336000             🧑  作者: Mango

PHP ?: - 略懂者止步,精通者必学

什么是 PHP ?: 操作符?

PHP ?: 操作符是 PHP 5.3 中引入的一个三元操作符,它的完整写法是:

condition ? value_if_true : value_if_false;

其中,condition 是一个要求返回布尔值的表达式,如果它的值为 true,那么整个操作符返回 value_if_true,否则返回 value_if_false

而 PHP ?: 操作符则是这个三元操作符的简写形式,它的写法是:

condition ?: value_if_false;

这里的 value_if_true 被省略了,如果 condition 的值为真,则整个操作符的值即为 condition 的值,否则返回 value_if_false

举个例子,这两个表达式的结果是相同的:

$foo = isset($bar) ? $bar : 'default';
$foo = $bar ?: 'default';
PHP ?: 操作符的好处

相比传统的三元操作符形式,PHP ?: 操作符有如下好处:

  • 简洁:可以省略 value_if_true,减少代码量,提高可读性;
  • 易用:可以方便地处理不存在的变量或数组元素,避免了繁琐的判断。

举个例子:

// 传统写法
if (isset($foo)) {
    $bar = $foo;
} else {
    $bar = 'default';
}

// PHP ?: 写法
$bar = $foo ?: 'default';
PHP ?: 操作符的注意事项

尽管 PHP ?: 操作符简单易用,但我们在实际开发中,也需要注意一些问题:

  • 不要滥用:这是一个简便的工具,但不是必需品。在一些复杂的判断中,还是建议使用传统的三元操作符,以免代码可读性下降。
  • 不要将判断表达式放在 ?: 左侧:有时候我们会不小心将判断表达式放在 ?: 左侧,这会导致语法错误。正确的写法是:
// 正确写法
$value = $a ? $a : $b;

// 错误写法
// 语法错误,左侧需要一个变量或可赋值的表达式
$value = $a ?: $b;
  • 避免嵌套使用:PHP ?: 操作符本身不支持嵌套使用,但如果将两个 ?: 操作符拼接在一起,就会类似嵌套。这会导致可读性下降,代码混乱。因此,建议避免这种用法。
结论

PHP ?: 操作符作为 PHP 5.3 新特性之一,极大地方便了我们的开发工作。它简洁、易用,能提高代码的可读性。但我们在使用时也需要注意一些注意事项,以避免出现问题。