Setting default values (conditional assignment)

二次信任 提交于 2019-11-26 20:32:18

问题


In Ruby you can easily set a default value for a variable

x ||= "default"

The above statement will set the value of x to "default" if x is nil or false

Is there a similar shortcut in PHP or do I have to use the longer form:

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

Are there any easier ways to handle this in PHP?


回答1:


As of PHP 5.3 you can use the ternary operator while omitting the middle argument:

$x = $x ?: 'default';



回答2:


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



回答3:


As of PHP 7.0, you can also use the 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;



回答4:


I wrap it in a function:

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

Some people may not like it, but it keeps your code cleaner if you're doing a crazy function call.




回答5:


I think your longer form is already the shortcut for php... and I wouldn't use it, because it is not good to read

Some notice: In the symfony framework most of the "get"-Methods have a second parameter to define a default value...



来源:https://stackoverflow.com/questions/163092/setting-default-values-conditional-assignment

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!