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

この質問に対する私の答えは、、、、などの 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
$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 に答える