функция in_array не работает - PullRequest
       0

функция in_array не работает

1 голос
/ 28 сентября 2011

Я использую эту строку:

'.((isset($imgRight) && in_array(1, $imgRight)) ? 'checked="checked"' : '').'

, а в некоторых случаях $imgRight может быть false .Вот почему есть isset(), но все равно не получается.

Что мне нужно сделать, чтобы избежать этого предупреждения?

Ответы [ 4 ]

3 голосов
/ 28 сентября 2011

То, что что-то false не означает, что оно не установлено:

$foo = false;
isset($foo); //true

Вы можете просто использовать:

($imgRight && in_array(1, $imgRight)) ? 'checked="checked"' : '')

или быть очень безопасным (если imgRgiht можетбыть нулевым или каким-либо не ложным значением, которое не является массивом):

((!empty($imgRight) && is_array($imgRight) && in_array(1, $imgRight)) ? 'checked="checked"' : '')
1 голос
/ 28 сентября 2011

Измените isset($imgRight) на is_array($imgRight).Я предполагаю, что значение для флажка использует нотацию массива для его значения.

0 голосов
/ 28 сентября 2011

Во-первых, не используйте короткие теги, они скоро будут устаревшими! Но на ваш вопрос: вам нужно проверять $ imgRight на его состояние, а не на его существование (isset)! Вы также можете сократить часть своего кода здесь ... и вы должны также проверить его существование, прежде чем работать с ним:

if (isset($imgRight)) {
   if ($imgRight != false && in_array(1, $imgRight)) { 
      $chk =  'checked="checked"' } 
   else { $chk = '';}
}

и в элементе флажка просто сделайте

echo $chk;
0 голосов
/ 28 сентября 2011

$imgRight пройдет isset(), если это ложно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...