Вопрос по php, variables, variable-assignment, default-value – Любой более краткий способ установить значения по умолчанию?

5

Начиная с PHP 5.3, можно опустить среднюю часть троичного оператора. Выражение expr1?: Expr3 возвращает expr1, если expr1 оценивается как TRUE, и expr3 в противном случае.

Есть ли лучший или более краткий способ, чем следующий код, чтобы установить значение переменных по умолчанию?

$v = isset($v) ? $v : "default value";

Ваш Ответ

4   ответа
0

$v установлено.

2

Просто спросилэтот и было указано здесь. Так что если вы используетеkey изarrayэто может быть улучшение

function isset_get($array, $key, $default = null) {
    return isset($array[$key]) ? $array[$key] : $default;
}
6

TL; DR - Нет, это выражение можеткороче.

Вы хотите, чтобы сокращенное троичное выражение выполняло неявноеisset(), Это обсуждалось насписок рассылки иifsetor RFC был создан, который охватывает концепцию, а также.

Так как сокращенный троичный оператор уже существовал во время вышеупомянутого обсуждения, что-то вроде этого былопредложил используя несуществующий оператор:??

// PROPOSAL ONLY, DOES NOT WORK
$v = $v ?? 'default value';

приписывать'default value' если$v не определено

Однако ничего подобного не было реализовано на основном языке до настоящего времени. До того, что вы написали, можетекороче.

этокакой ужас конструкция короче, но обратите внимание, что этоне то же самое потому что он присваивает значение по умолчанию, если переменная существует, но оценивается как:false

// DO NOT USE
$v = @$v ?: 'default value';
@SoumyaBiswas я могуне выбирай что хуже. Carlos
@jackflash Отсюда мое упоминание о "ужасная конструкция " Ja͢ck
Понимаю. Но я неНе думаю, что это хороший подход ... Carlos
@SoumyaBiswas Да, этоверно;@ делает примерно то же самое, так что ответ на самом деле этоневозможно (практически) сделать код OP короче :) Ja͢ck
2

Вот более короткий синтаксис:

isset($v) || $v="default value";

Похожие вопросы