2013-07-02 56 views
-1

這裏的原始數組:如何標頭添加到其他的PHP陣列

Array 
(
    [0] => Array 
     (
      [0] => ID 
      [1] => NAME 
      [2] => GROUP 
     ) 

    [1] => Array 
     (
      [0] => 1221 
      [1] => 500 
      [2] => 2 
     ) 
    [2] => Array 
     (
      [0] => 1654 
      [1] => 33 
      [2] => 23 
     ) 
) 

隱蔽它來:

Array 
(
    [0] => Array 
     (
      [ID] => 1221 
      [NAME] => 500 
      [GROUP] => 2 
     ) 
    [1] => Array 
     (
      [ID] => 1654 
      [NAME] => 33 
      [GROUP] => 23 
     ) 
) 

當然還有超過3個頁眉和多於2個陣列的數據。有沒有一種自動的方法可以高效而乾淨地完成這項工作?

+0

'array_combine()'這樣做,但是你需要遍歷數組併爲每個元素調用它。 – Matthew

回答

1

你可以試試:

$keys = array_shift($data); 
$data = array_map(function ($v) use($keys) { 
    return array_combine($keys, $v); 
}, $data); 

print_r($data); 

Live DEMO

1
$header = $array[0]; 
$newarray = array(); 
for($i = 1; $i<count($array); $i++) { 
    $newarray[$i-1] = array(); 
    foreach($header as $k => $v) { 
     $newarray[$i-1][$v] = $array[$i][$k]; 
    } 
} 


print_r($newarray); 
1

我要回答的問題是使用array_combine PHP的內置功能,如array_valuesarray_fillarray_map

工作示例http://phpfiddle.org/lite/code/zdw-v9k

function array_mapper($keys, $record) { 
    return array_combine($keys, $record); 
} 

$key = array_values(array_shift($arr)); 
$keys = array_fill(0, count($arr), $key); 
$res = array_map('array_mapper', $keys, $arr); 

print_r($res);