in_array函数失败

时间:2011-09-28 01:24:40

标签: php arrays warnings

我正在使用这一行:

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

并且,在某些情况下,$imgRight可以是 false 。这就是isset()的原因,但它仍然失败。

我需要做些什么才能避免此警告?

4 个答案:

答案 0 :(得分:3)

仅仅因为某些事情false并不意味着它没有设置:

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

你可以使用:

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

或非常安全(如果imgRgiht可能为null,或者某些非假数值不是数组):

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

答案 1 :(得分:1)

isset($imgRight)更改为is_array($imgRight)。我假设复选框的值使用数组表示法作为其值。

答案 2 :(得分:0)

$imgRight如果错误则会通过isset()

答案 3 :(得分:0)

首先,不要使用短标签,它很快就会被弃用! 但是对于你的问题:你需要检查$ imgRight的状态而不是它的存在(isset)!你也可以在这里快捷一些代码......你也应该在使用它之前检查它是否存在:

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

并在您的复选框元素中执行

echo $chk;