【问题标题】:in_array function failsin_array 函数失败
【发布时间】:2011-09-28 01:24:40
【问题描述】:

我正在使用这条线:

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

并且,在某些情况下,$imgRight 可能是false。这就是为什么有isset(),但它仍然失败。

我需要做些什么来避免这个警告?

【问题讨论】:

    标签: php arrays warnings


    【解决方案1】:

    仅仅因为某些东西是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"' : '')
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        $imgRight 将通过 isset() 如果它是假的。

        【讨论】:

          【解决方案4】:

          首先,不要使用短标签,它很快就会被弃用! 但是对于您的问题:您需要检查 $imgRight 的状态而不是它的存在(isset)!您还可以在此处简化您的一些代码...并且您还应该在使用它之前检查它的存在:

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

          在你的复选框元素中做

          echo $chk;
          

          【讨论】:

          • 尝试搜索短标签(不是短代码,对不起)并弃用,你会看到。我知道这并不是 100% 真实的,因为这只是开发团队的一个想法,他们决定暂时不这样做!但它可能有一天会发生......如果你做一些进一步的研究,你也会发现几乎没有其他理由不使用它们 - 参见例如here
          • 啊,是的,已经讨论过了。我以为您指的是三元运算符,因为 OP 的问题中没有短标签。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-08-31
          • 1970-01-01
          • 1970-01-01
          • 2021-11-29
          • 2012-07-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多