2013-12-18 3 views
-1

Мне интересно, есть ли способ сделать этот код короче. Я использую 2 if заявления, и я ищу только один. Вещи $user - это сеанс, и если вы проверите, существует ли в той же строке $user->userId, код будет ошибочным, если сеанс не существует. Вызывается путем запроса userId от объекта, который не существует. Это довольно логично, но теперь есть какое-то решение?PHP Возможные способы записи if

if ($user != null) { 
    if ($user->userId == 1) { 
    .. 
    } 
} 

ответ

2

Как об использовании the && operator:

if ($user && $user->userId == 1) { 
    //... 
} 
+0

Уол, тогда я сделал что-то не так, когда я пытался сделать то же самое раньше. В любом случае, спасибо большое. – user2103237

+0

@ user2103237 Просто, чтобы уточнить, 'if ($ user ...' check эквивалентно 'if ($ user == true ...', поэтому, скорее всего, это нормально для вас, но будьте осторожны, что '0' , 'false',' ''', '' 0'' и т. д. все делают * не * равно' true', но '1',' true', ''false'','' 1'' и т. д. все * do * equal 'true'. – 0b10011

0

Вы хотите использовать оператор &&. Это означает, что и

if ($user && $user->userId == 1) { 
    // do some things 
} 

Вы также можете захотеть взглянуть на оператора ||, это означает, что или.

Оператор && вернет истинное ТОЛЬКО, если два предиката возвращают true.

Оператор || вернет true, если один из предикатов возвращает true.

1

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

if (($user != null) && ($user->userId == 1)) { 

или вы могли бы просто:

if ($user && ($user->userId == 1)) { 

если ($ пользователю) просто проверяет, установлена ​​ли переменная, или если она не равна нулю.

Смежные вопросы