我正在使用这一行:
'.((isset($imgRight) && in_array(1, $imgRight)) ? 'checked="checked"' : '').'
并且,在某些情况下,$imgRight
可以是 false 。这就是isset()
的原因,但它仍然失败。
我需要做些什么才能避免此警告?
答案 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;