2015-12-05 4 views
0

Привет, У меня возникают проблемы с операторами OR в этой функции, и я не уверен, почему?PHP - Как правильно использовать оператор if (isset() &&! = NULL) || (isset() &&! = NULL)?

<?php if(isset($value['instagram_id']) && $value['instagram_id'] != NULL) || (isset($value['facebook_id']) && $value['facebook_id'] != NULL) || (isset($value['soundcloud_id']) && $value['soundcloud_id'] != NULL) || (isset($value['twitter_id']) && $value['twitter_id'] != NULL) || (isset($value['youtube_id'])) && $value['youtube_id'] != NULL) { ?> 

Может кто-то пролить свет на то, что я делаю неправильно?

+0

У вас есть тонна избыточности, не требуется. Функция 'isset()' в php возвращает true, если значение 'не является нулевым или ложным'. Здесь слишком много. – Ohgodwhy

+0

, так что просто используйте! = NULL и вообще покончите с isset? – Stuart

+2

Нет. Просто используйте 'isset()' и покончите с '! = NULL' все вместе. – Ohgodwhy

ответ

2

хорошо .... если вы хотите, чтобы оценить все заявления в одном состоянии, то вы можете уменьшить if заявление ниже

if(!empty($value['instagram_id']) || !empty($value['facebook_id']) || !empty($value['soundcloud_id']) || !empty($value['twitter_id']) || !empty($value['youtube_id'])) { 

} 

из Docs

пустой() является существенно краткий эквивалент! isset ($ var) || $ Вар == ложные

!empty также оценит null, как false

+0

Это слишком сложно и сложно поддерживать или отлаживать. –

+1

@fandressouza действительно. но в примере OP он хотел сделать это в одном выражении 'if', тогда это его выбор, а не наш. – Andrew

+0

Я довольно новичок в php, так как вы, вероятно, можете сказать из моего (теперь известного) слишком сложного оператора if, для будущей ссылки для ученика веб-разработки - какой будет наиболее подходящий метод для достижения чего-то подобного в то же время легко поддерживать и отлаживать код? – Stuart

0

Попробуйте это:

<?php 
    if((isset($value['instagram_id']) && $value['instagram_id']) || 
    (isset($value['facebook_id']) && $value['facebook_id']) || 
    (isset($value['soundcloud_id']) && $value['soundcloud_id']) || 
    (isset($value['twitter_id']) && $value['twitter_id']) || 
    (isset($value['youtube_id']) && $value['youtube_id'])){ 
     ... //TODO something 
    } 
?> 
0
if ($value['instagram_id'], $value['instagram_id'])) { 
} 

Это возвращает истину, только если все аргументы isset() установлены и не содержат нуль.

+0

Вам не хватает вызова isset? – Terminus

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