2016-12-30 15 views
1

Я использую оператор стенограммы if, чтобы проверить, присвоено ли значение переменной, мой вопрос заключается в том, следует ли присваивать оператор переменной, потому что она работает, если я ее назначил или не.PHP | Должен ли я назначать сокращенное выражение, если выражение для varible

заявление не присвоено переменной | работающий

!empty($name) ? $name : $name=""; 

инструкция, присвоенная переменной | также работающие

$is_name = (!empty($name)) ? $name : $name="" ; 

Оба оператора работают, но какой из них правильный или лучше использовать.

+0

Не используйте 'empty()' для проверки, если установлена ​​переменная или нет, используйте 'isset()'. Иначе это зависит от того, что вы хотите сделать. Если вы просто хотите установить переменную, если она не была задана раньше, ваш первый оператор в порядке. Это также имеет смысл, если вы используете 'isset()' then. – KhorneHoly

+0

Переменная $ name может быть пуста, поэтому я использовал 'empty()' Я попытаюсь использовать ее с 'isset()', но все же мне следует назначить весь оператор переменной, и я скажу, что хочу повторить значение $ name, должен ли я писать 'echo $ is_name' или' echo $ name' –

+0

@KhorneHoly 'empty()' лучше (для ввода текста/целого); он проверяет, является ли он пустым/установленным. 'isset()' лучше всего при использовании флажков/радиостанций/select. –

ответ

1

Это может быть лучше. вам не нужно дополнительно! operaiton и переменное назначение.

$is_name = empty($name) ? "" : $name; 

или

$is_name = isset($name) ? $name : ""; //recomended this one 
+0

*** Хороший ответ *** всегда будет иметь объяснение того, что было сделано, и почему это было сделано таким образом не только для OP, но и для будущих посетителей SO. –

2

В PHP 5.3+ вы можете использовать это:

$is_name = $name ?: ""; 

Примечание: В вашем случае это, вероятно, не лучшая идея, поскольку она дает предупреждение, если $ name не задано. Здесь я бы по-прежнему рекомендовал нормальный путь

$is_name = isset($name) ? $name : ""; 

Но вопрос в том, почему в любом случае есть неинициализированная переменная?

Если у вас есть случай, что $ name может быть пустой строкой, и вы хотите дать ему значение по умолчанию, в этом случае оператор?:.

$is_name = $name ?: "default value"; 
+0

Да точно, $ name может быть пустой строкой –

+0

@AhmadTahhan, тогда вы хотите назначить пустую строку, если строка пуста? –

+0

Я объясню, что у меня есть страницы A и B, страница A может отправлять значения через форму в форму на странице B, поэтому я хочу, чтобы значения, которые были вставлены в форму A, отображались в форме B, вот почему я проверяю, он имеет значение или нет. В то же время страница B может быть доступна независимо и заполнить форму в ней без указания страницы A. Извините, если это осложнилось. Я не знаю, достаточно ли достаточно –