如何在未定义的数组的所有键中设置NULL?

时间:2016-01-11 16:52:30

标签: php arrays null

我有这样的PHP代码:

$var = "
         <ul>
               <li class='".$this->data['active']['one']."'></li>
               <li class='".$this->data['active']['two']."'></li>
               <li class='".$this->data['active']['three']."'></li>
               <li class='".$this->data['active']['four']."'></li>
               <li class='".$this->data['active']['five']."'></li>
         </ul>
       ";

始终定义此数组data['active']的一个键。我的意思是有时只定义这个:

  • $this->data['active']['one']

有时只有这个:

  • $this->data['active']['two']

等等..!我想说,我总是面对很多这样的通知:

  

注意:未定义的索引:{x}行{path}中的三个

那么,如何将null设置为该数组的所有其他键?我这样做了(但它不起作用)

$this->data['active'][] = null;
$this->data['active']['one'] = 'classname'; // or ['two'] or ['three'] and so on

同样,这些数组中只有一个是填充(已定义)。好吧,有什么解决方案可以删除通知:

2 个答案:

答案 0 :(得分:0)

有几种方法 - 也许这样的事情可以简化事情:

实际上,在尝试以任何方式使用密钥之前,您需要检查数组中是否存在密钥 - 函数kekey exists的简写并使用array_key_exists函数进行检查指定的键可用,否则返回默认的空字符串。

<?php

    $active=$this->data['active'];

    function ke( $a, $k ){
        return array_key_exists( $k, $a ) ? $a[ $k ] : '';  
    }

    $var = "
             <ul>
                   <li class='".ke( $active, 'one' )."'></li>
                   <li class='".ke( $active, 'two' )."'></li>
                   <li class='".ke( $active, 'three' )."'></li>
                   <li class='".ke( $active, 'four' )."'></li>
                   <li class='".ke( $active, 'five' )."'></li>
             </ul>
           ";
?>

答案 1 :(得分:0)

您需要检查密钥是否已设置或每个元素的foreach:

 $var = "<li class='". (isset($this->data['active']['one']) ? $this->data['active']['one'] : '')."'></li>    
<li class='". (isset($this->data['active']['two']) ? $this->data['active']['two'] : '')."'></li>    
<li class='". (isset($this->data['active']['three']) ? $this->data['active']['three'] : '')."'></li>";

foreach($this->data['active'] as $key => $value){
    $var .= "<li class='" . $value . "'></li>";
}