2017-01-14 3 views
1

Я пытаюсь показать значение входного поля, используя логин if-else, и я хочу использовать для него один оператор линии ternary, но он всегда возвращает ошибку. Однако, если я использую if-else, он работает нормально. Мой код:Проблема с isset() внутри вложенного тернарного оператора

работает отлично

if(isset($_COOKIE['m_name'])){ 
    echo $_COOKIE['m_name']; 
}else if(isset($this->userdata)){ 
    echo $this->userdata[0]->first_name; 
}else{ 
    echo 'No Data'; 
} 

Возврат Примечание Всегда

echo isset($_COOKIE['m_name'])? $_COOKIE['m_name']: isset($this->userdata)?$this->userdata[0]->first_name:'No Value'; 

Ошибка:

Примечание: Попытка получить имущество не-объект в/дома/.... на линии ...

Я не знаю, что я не хватает?

Любая помощь была бы принята с благодарностью.

+0

Я бы предпочел путь без нескольких объединенных тройных операторов, как это лучше читаемые. – Alex2php

+0

Спасибо @ Alex2php! Но я должен разобраться в этом. –

+0

Спасибо @ Alex2php! проблема решена. Теперь я буду следовать вашему подходу. –

ответ

3

Я не уверен, но я думаю, что это должно быть

echo (isset($_COOKIE['m_name'])? $_COOKIE['m_name']: (isset($this->userdata)?$this->userdata[0]->first_name:'No Value')); 
+0

Спасибо @ Dmnik! :) Его работа прекрасна. И вы научите меня основам, которых я отсутствовал. Так держать. Лучше всего начинайте с SO. Happy Coding :) –

+0

Черт побери! Ницца! ;-) –

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