这是原始数组:
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 :(得分: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 :(得分:1)
您可以尝试:
$keys = array_shift($data);
$data = array_map(function ($v) use($keys) {
return array_combine($keys, $v);
}, $data);
print_r($data);
答案 2 :(得分:1)
我对这个问题的回答是使用PHP内置函数,如array_values
,array_fill
,array_combine
和array_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);