5000164 is here
2015-07-23

PHP の二次元配列から同じキーの値だけで新しい配列を生成する

PHP の二次元配列から同じキーの値だけで新しい配列を生成する関数 array_column

他の人のコードを読んでたらたまたま見つけた便利な関数 array_column。
二次元配列から同じキーの値だけで新しい配列を生成する。
PHP: array_column - Manual

同じキーの値だけで新しい配列を作るサンプル

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
$data = [
    [
        'id' => 1,
        'name' => 'aaa',
    ],
    [
        'id' => 2,
        'name' => 'bbb',
    ],
];

$id_list = array_column($data, 'id');
$name_list = array_column($data, 'name');

var_dump($id_list);
// array(2) {
//   [0]=>
//   int(1)
//   [1]=>
//   int(2)
// }

var_dump($name_list);
// array(2) {
//   [0]=>
//   string(3) "aaa"
//   [1]=>
//   string(3) "bbb"
// }

二次元配列の縦横を入れ替える (転置行列を得る) サンプル

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
$data = [
    [
        'id' => 1,
        'name' => 'aaa',
    ],
    [
        'id' => 2,
        'name' => 'bbb',
    ],
];

$transposed_matrix = [];
foreach ($data[0] as $key => $value) {
    $transposed_matrix[$key] = array_column($data, $key);
}

var_dump($transposed_matrix);
// array(2) {
//     ["id"]=>
//   array(2) {
//         [0]=>
//     int(1)
//     [1]=>
//     int(2)
//   }
//   ["name"]=>
//   array(2) {
//         [0]=>
//     string(3) "aaa"
//     [1]=>
//     string(3) "bbb"
//   }
// }

参考