2012-08-02 47 views
1

我有这两个数组,我需要组合两个multidimensioal阵列,并设置一个作为键

Array (
    [0] => Column 1 
    [1] => Column 2 
    [2] => Column 3 
) 
Array (
    [0] => Array (
      [0] => 111 
      [1] => 222 
      [2] => 333 
     ) 
    [1] => Array (
      [0] => 444 
      [1] => 555 
      [2] => 666 
     ) 
) 

组合成这个

Array (
    [0] => Array (
      [Column 1] => 111 
      [Column 2] => 222 
      [Column 3] => 333 
     ) 
    [1] => Array (
      [Column 1] => 444 
      [Column 2] => 555 
      [Column 3] => 666 
     ) 
) 

这是我和它的作品,但我我确信它可以以一种更简单的方式完成:

$values = array(array(1,2,3), array(4,5,6)); 
$fields = array('Column 1','Column 2','Column 3'); 
$i = 0; 
$j = 0; 
$l = 0; 
$rows = array(); 
$columns = array(); 

foreach($values as $val) { 
    $rows[] = $val; 

    foreach ($fields as &$field) { 
     $columns[$j][$i] = $field; 
     $i++; 
    } 
    $i = 0; 
    $j++; 
} 

foreach($columns as $c){ 
    $result[] = array_combine($c,$rows[$l]); 
    $l++; 
} 

我想如果可能的话清理它。我有时会遇到与阵列的纠缠,而这真的与我的头脑混为一谈。 :-)

回答

4

迭代数组的数组在每个数组传递给array_combine[docs],与键一起:

$result = array(); 

foreach($values as $key => $value) { 
    $result[$key] = array_combine($fields, $value); 
} 
1

我觉得array_combine()像你这样是一个简单的,你可以得到它。 PHP没有任何东西的功能,但是你可以在任何需要的时候使它变成现实,所以对我来说看起来很好。有点奇怪,你可以在tho之前将值和关键字放入单独的数组中,你可以简单地对大数据集进行foreach,或者我可能太快地查看了代码?