我使用以下代码用``
填充子数组中的所有空键:
$array = array(
'note' => array('test', 'test1'),
'year' => array('2011','2010', '2012'),
'type' => array('conference', 'journal', 'conference'),
);
foreach ($array['type'] as $k => $v) {
foreach($array as $element => $a) {
$iterator = $array[$element];
if(!isset($iterator[$k])){
$iterator[$key] = '';
}
}
}
的print_r($阵列);
问题在于它实际上并没有更改$array
中的元素,而是更改临时变量$iterator
中的元素。
我知道这是一个简单的问题,但我想找出最好,最快的解决方案。
答案 0 :(得分:2)
看起来你有一些错别字。永远不会定义循环中间的$key
。
$a
应与$iterator[$k]
的值相同,因此无需进行设置。
试试这个。
$array = array(
'note' => array('test', 'test1'),
'year' => array('2011','2010', '2012'),
'type' => array('conference', 'journal', 'conference'),
);
foreach ($array as $k => $v) {
foreach($k as $element => $a) {
if(!isset($a)){
$array[$element] = '';
}
}
}
答案 1 :(得分:2)
您不需要$ iterator变量,只需:
foreach ($array['type'] as $k => $v) {
foreach($array as $element => $a) {
if(!isset($array[$element][$k])){
$array[$element][$key] = '';
}
}
}
我还建议切换内部和外部循环,这样它更具可读性和效率。
foreach($array as $element => $a) {
foreach ($array['type'] as $k => $v) {
if(!isset($array[$element][$k])){
$array[$element][$key] = '';
}
}
}