2013-09-03 4 views
33

Есть ли сокращенный способ назначения переменной чему-то, если она не существует в PHP?Сокращение PHP для isset()?

if(!isset($var) { 
    $var = ""; 
} 

Я хотел бы сделать что-то вроде

$var = $var | ""; 
+1

Есть ли $ val = isset ($ var)? $ var: ''; 'работа для вас? –

+2

Я нашел этот пост очень полезным: http://davidwalsh.name/php-shorthand-if-else-ternary-operators – Pathros

+0

Лучше оригинал для этого дубликата: [Лучший способ присвоить переменной значение по умолчанию (имитировать Perl ||, || =)] (http://stackoverflow.com/q/5972516/2157640) – Palec

ответ

109

Обновления для PHP 7 (спасибо shock_gone_wild)

PHP 7 вводит так называемого нулевого оператора коалесцирующих упрощающее ниже: -

$var = $var ?? "default"; 

Перед PHP 7

Нет, нет специального оператора или специальный синтаксис для этого. Тем не менее, вы можете использовать тройной оператор:

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

Или так:

isset($var) ?: $var = 'default'; 
+1

Вот ссылка на новые возможности PHP7 (включая нулевой оператор коалесценции): http://php.net/manual/en/migration70 .new-features.php – kurdtpage

+1

В дополнение к операторам присваивания этот оператор также может использоваться в аргументах функции. –

+3

Не работает с массивами. '$ attribute ['hint'] ?? '' '** Неопределенный индекс: hint ** –

16

Вы можете использовать новый тройной оператор (PHP 5.3+)

isset($var) ?: $var = ""; 

Или для старой версии:

$var = isset($var) ? $var : ""; 
+5

Если '$ var' существует и имеет значение, вы будете перезаписывать его значением' true'. Эти два примера не совпадают. –

+2

Вы правы. Отредактировано, спасибо. –

+2

Не знаете, кто вас ниспровергал, но я привел вас обратно, это полезный ответ, спасибо. – brentonstrine