【发布时间】:2011-09-28 01:24:40
【问题描述】:
我正在使用这条线:
'.((isset($imgRight) && in_array(1, $imgRight)) ? 'checked="checked"' : '').'
并且,在某些情况下,$imgRight 可能是false。这就是为什么有isset(),但它仍然失败。
我需要做些什么来避免这个警告?
【问题讨论】:
我正在使用这条线:
'.((isset($imgRight) && in_array(1, $imgRight)) ? 'checked="checked"' : '').'
并且,在某些情况下,$imgRight 可能是false。这就是为什么有isset(),但它仍然失败。
我需要做些什么来避免这个警告?
【问题讨论】:
仅仅因为某些东西是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"' : '')
【讨论】:
将isset($imgRight) 更改为is_array($imgRight)。我假设复选框的值使用数组表示法作为其值。
【讨论】:
$imgRight 将通过 isset() 如果它是假的。
【讨论】:
首先,不要使用短标签,它很快就会被弃用! 但是对于您的问题:您需要检查 $imgRight 的状态而不是它的存在(isset)!您还可以在此处简化您的一些代码...并且您还应该在使用它之前检查它的存在:
if (isset($imgRight)) {
if ($imgRight != false && in_array(1, $imgRight)) {
$chk = 'checked="checked"' }
else { $chk = '';}
}
在你的复选框元素中做
echo $chk;
【讨论】: