将元素添加到数组的所有空键

时间:2012-06-19 22:40:00

标签: php arrays multidimensional-array

我使用以下代码用``填充子数组中的所有空键:

$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中的元素。

我知道这是一个简单的问题,但我想找出最好,最快的解决方案。

2 个答案:

答案 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] = '';
        }
      }
    }