【发布时间】:2010-09-14 20:29:37
【问题描述】:
在 Ruby 中,您可以轻松地为变量设置默认值
x ||= "default"
如果 x 为 nil 或 false,上述语句会将 x 的值设置为“默认”
PHP中是否有类似的快捷方式或者我必须使用更长的形式:
$x = (isset($x))? $x : "default";
有没有更简单的方法在 PHP 中处理这个问题?
【问题讨论】:
标签: php ruby logical-operators
在 Ruby 中,您可以轻松地为变量设置默认值
x ||= "default"
如果 x 为 nil 或 false,上述语句会将 x 的值设置为“默认”
PHP中是否有类似的快捷方式或者我必须使用更长的形式:
$x = (isset($x))? $x : "default";
有没有更简单的方法在 PHP 中处理这个问题?
【问题讨论】:
标签: php ruby logical-operators
从 PHP 7.0 开始,您还可以使用 null coalesce 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';
【讨论】:
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
从 PHP 5.3 开始,您可以使用三元运算符同时省略中间参数:
$x = $x ?: 'default';
【讨论】:
undefined variable 错误消息。
我将它包装在一个函数中:
function default($value, $default) {
return $value ? $value : $default;
}
// then use it like:
$x=default($x, 'default');
有些人可能不喜欢它,但如果你在做一个疯狂的函数调用,它会让你的代码更干净。
【讨论】:
isset($x) or $x = 'default';
【讨论】:
isset($x) or $x = 'default'; 版本;你应该更新你的答案。 :-)
x = false; x ||= true; x #=> true
我认为你的长格式已经是 php 的快捷方式了......我不会使用它,因为它不好阅读
一些注意事项: 在symfony框架中大部分的“get”-Methods都有第二个参数来定义一个默认值...
【讨论】: