Установка значений по умолчанию (условное присвоение) - PullRequest
29 голосов
/ 02 октября 2008

В Ruby вы можете легко установить значение по умолчанию для переменной

x ||= "default"

Приведенный выше оператор установит значение x в значение по умолчанию, если x равно nil или false

Есть ли аналогичный ярлык в PHP или мне нужно использовать более длинную форму:

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

Есть ли более простые способы справиться с этим в PHP?

Ответы [ 5 ]

40 голосов
/ 03 февраля 2011

Начиная с PHP 5.3, вы можете использовать троичный оператор, опуская средний аргумент:

$x = $x ?: 'default';
8 голосов
/ 02 октября 2008
isset($x) or $x = 'default';
5 голосов
/ 23 августа 2018

Начиная с PHP 7.0, вы также можете использовать нулевой оператор слияния

// 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;
2 голосов
/ 02 октября 2008

Я заключаю это в функцию:

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

Некоторым людям это может не понравиться, но он сохраняет ваш код чище, если вы делаете сумасшедший вызов функции.

0 голосов
/ 02 октября 2008

Я думаю, что ваша длинная форма уже является ярлыком для php ... и я бы не стал ее использовать, потому что читать не хорошо

Некоторые уведомления: В платформе Symfony большинство методов get получают второй параметр для определения значения по умолчанию ...

...