我使用以下代码用``
填充子数组中的所有空键:
$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);
问题是它实际上并没有改变$array
中的元素,而是在临时变量$iterator
中。
我知道这是一个简单的问题,但我想找出最佳和最快的解决方案。
你不需要$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] = '';
}
}
}
看起来你有一些错别字。 循环中间的$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] = '';
}
}
}