如何在数组的所有键中设置NULL,这些键不是';t定义


How to set NULL in all keys of array which aren't defined?

我有一个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

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

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

实际上,在尝试以任何方式使用该键之前,您都需要检查该键是否存在于数组中——函数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>
           ";
?>

您需要检查是否为每个元素设置了密钥或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>";
}