0

这是原始数组:

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 个数据数组。有没有一种自动的方法可以有效而干净地做到这一点?

4

3 回答 3

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);
于 2013-07-02T18:23:30.190 回答
1

我对这个问题的回答是使用 PHP 内置函数,如array_values、和:array_fillarray_combinearray_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);
于 2013-07-02T18:55:15.900 回答
1

你可以试试 :

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

print_r($data);

现场演示

于 2013-07-02T18:53:08.967 回答