设置默认值(条件分配)

时间:2008-10-02 15:42:49

标签: php ruby logical-operators

在Ruby中,您可以轻松地为变量

设置默认值
x ||= "default"

如果x为nil或false

,上述语句会将x的值设置为“default”

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

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

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

5 个答案:

答案 0 :(得分:40)

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

$x = $x ?: 'default';

答案 1 :(得分:8)

isset($x) or $x = 'default';

答案 2 :(得分:5)

从PHP 7.0开始,您还可以使用null coalescence operator

// 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;

答案 3 :(得分:2)

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

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

有些人可能不喜欢它,但如果您正在进行疯狂的函数调用,它会使您的代码更清晰。

答案 4 :(得分:0)

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

一些通知: 在symfony框架中,大多数“get”-Methods都有第二个参数来定义默认值......