Как установить значение по умолчанию для строки в PHP, если другая строка пуста?

Лучшим примером было бы показать вам, как это решается в Javascript:

var someString = someEmptyString || 'new text value';

В этом примере javascript мы обнаружили, что «someEmptyString» пуста, и автоматически установили значение «новое текстовое значение». Возможно ли это в PHP и какой самый короткий (код) способ сделать это?

Вот как я это делаю сейчас:

if ($someEmptyString == "")
    $someString = 'new text value'; else $someString = $someEmptyString;

Это беспокоит меня уже довольно давно, и я был бы очень признателен, если кто-то знает лучший способ сделать это. Благодарю вас!


person Edi Budimilic    schedule 23.06.2011    source источник
comment
немного короче: someEmptyString ? someEmptyString : 'новое текстовое значение';   -  person Gerben    schedule 23.06.2011


Ответы (4)


Вы можете использовать тернарный оператор ?:.

Если у вас PHP 5.3, это очень элегантно:

$someString = $someEmptyString ?: 'new text value';

До версии 5.3 он должен быть немного более подробным:

$someString = $someEmptyString ? $someEmptyString : 'new text value';
person lonesomeday    schedule 23.06.2011
comment
Что происходит с «0» здесь? - person Haozhun; 15.01.2015
comment
@Haozhun Условие не выполняется. Таблица истинности здесь. - person lonesomeday; 15.01.2015
comment
Означает ли это, что ответ содержит тонкую ошибку? - person Haozhun; 16.01.2015
comment
@Haozhun Не уверен, что это ошибка. Ложность '0' является довольно стандартным поведением PHP. - person lonesomeday; 16.01.2015
comment
Ложность '0' может быть неочевидна для начинающих PHP-программистов. Кроме того, вопрос задает if another string is empty, а не '' или '0'. Вам решать, пересматривать ли ответ. - person Haozhun; 20.01.2015
comment
Я не собираюсь пересматривать ответ, потому что это сделает его бессмысленным. Вам придется сделать empty($someEmptyString) ? 'new text value' : $someEmptyString, что не очень полезно. Но вы делаете хорошее замечание, которое следует иметь в виду, если вы используете этот код. - person lonesomeday; 20.01.2015

$someString = (!isSet( $someEmptyString ) || empty( $someEmptyString ) )? "new text value" : $someEmptyString;

Я думаю, что это будет самый правильный способ сделать это. Проверьте, пуста ли эта переменная или не задано ли условие запуска.

это все еще немного кода, но вы не должны получать никаких предупреждений или ошибок PHP при выполнении.

person Michael Brevig    schedule 23.06.2011

Вы можете использовать тернарный оператор

$someString = $someEmptyString ?: "New Text Value";
person Dan Simon    schedule 23.06.2011

В то время как троичный более понятен, что происходит, вы также можете установить переменную, подобную этой

($someString = $someEmptyString) || ($someString = "Default");

Работает во всех версиях PHP. Вы также можете легко расширить это, чтобы использовать более 1 варианта.

($someString = $someEmptyString) ||
($someString = $someOtherEmptyString) ||
($someString = "Default");

который я лично нахожу более читаемым, чем его троичный эквивалент

person exussum    schedule 22.05.2015