2012-08-15 149 views
-1

我有没有键的嵌套数组。我想按特定顺序添加键。什么是干净的方式来做到这一点?PHP将键添加到嵌套数组

从这个数组开始。它只是按位置索引的。

[0] => (
    [0] => Tyler 
    [1] => Durden 
    [2] => 05/07/1985 
) 
[1] => (
    [0] => Edward 
    [1] => Norton 
    [2] => 03/21/1988 
) 

现在,为了将这些键:

['first_name'] => 
['last_name'] => 
['birthday'] => 

最终阵列:

[0] => (
    ['first_name'] => Tyler 
    ['last_name'] => Durden 
    ['birthday'] => 05/071985 
) 
[1] => (
    ['first_name'] => Edward 
    ['last_name'] => Norton 
    ['birthday'] => 03/21/1988 
) 

奖金upvotes如果你的代码允许,而不是硬编码的任意键结构,!

+0

我用了一堆嵌套的foreach循环的尝试过自己。这是超效率和清晰的,一个更优雅的方法必须存在。我自己试了一下,谢谢。我也浏览了所有的PHP函数,但没有意识到array_combine可以在这种情况下工作。 – 2012-08-15 19:08:57

回答

4

我想array_combine将这样的伎俩:

foreach ($bigarray as &$x) { 
    $x = array_combine(array('first_name','last_name','birthday'),$x); 
} 
+0

'($ bigarray as&$ x)'中的&符号是什么? – 2012-08-15 18:39:46

+1

&符号让我们循环访问数组[通过引用](http://www.php.net/manual/en/language.references.whatdo.php),以便我们可以随时更改数组值。 – awm 2012-08-15 18:41:55

0

而且经典algorythm:

foreach ($array as $key=>$value) { 
    $array[$key]['first_name'] = $array[$key][0]; 
    $array[$key]['last_name'] = $array[$key][1]; 
    $array[$key]['birthday'] = $array[$key][2]; 
    unset($array[$key][0]); 
    unset($array[$key][1]); 
    unset($array[$key][2]); 
}