我有这样的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
同样,这些数组中只有一个是填充(已定义)。好吧,有什么解决方案可以删除通知:?
答案 0 :(得分:0)
有几种方法 - 也许这样的事情可以简化事情:
实际上,在尝试以任何方式使用密钥之前,您需要检查数组中是否存在密钥 - 函数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>
";
?>
答案 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>";
}