我有一个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(已定义)。好吧,有什么解决方案可以删除注意:?
有几种方法-也许这样的方法可以简化事情:
实际上,在尝试以任何方式使用该键之前,您都需要检查该键是否存在于数组中——函数ke
是key 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>";
}