33

在 Ruby 中,您可以轻松地为变量设置默认值

x ||= "default"

如果 x 为 nil 或 false,上述语句将 x 的值设置为“default”

PHP中是否有类似的快捷方式或者我必须使用更长的形式:

$x = (isset($x))? $x : "default";

有没有更简单的方法可以在 PHP 中处理这个问题?

4

5 回答 5

45

从 PHP 5.3 开始,您可以使用三元运算符同时省略中间参数:

$x = $x ?: 'default';
于 2011-02-03T12:54:27.423 回答
11

从 PHP 7.0 开始,您还可以使用null coalesce 运算符

// PHP version < 7.0, using a standard ternary
$x = (isset($_GET['y'])) ? $_GET['y'] : 'not set';
// PHP version >= 7.0
$x = $_GET['y'] ?? 'not set';
于 2018-08-23T14:13:01.370 回答
8
isset($x) or $x = 'default';
于 2008-10-02T15:48:21.350 回答
2

我将它包装在一个函数中:

function default($value, $default) {
    return $value ? $value : $default;
}
// then use it like:
$x=default($x, 'default');

有些人可能不喜欢它,但如果你在做一个疯狂的函数调用,它会让你的代码更干净。

于 2008-10-02T18:40:19.300 回答
0

我认为您的较长形式已经是 php 的快捷方式......我不会使用它,因为它不好阅读

一些注意事项:在 symfony 框架中,大多数“get”方法都有第二个参数来定义默认值......

于 2008-10-02T15:47:29.653 回答