塩焼きブログ

塩焼きに関しての研究内容を公開しています

array_columnで多次元配列の特定のキー一覧を取り出す

以下のような多次元配列の特定のキーを取り出してきてもう一個配列作れるみたいな? array_mapとか使って同じようなことできるけど、PHPにはarray_columnがあるのでこれを使った方が読みやすいな。

<?php
$result = [
    [
        'hoge1' => 'a1',
        'hoge2' => 'a2',
        'hoge3' => 'a3'
    ],
    [
        'hoge1' => 'b1',
        'hoge2' => 'b2',
        'hoge3' => 'b3'
    ],
    [
        'hoge1' => 'c1',
        'hoge2' => 'c2',
        'hoge3' => 'c3'
    ]
];

$test1 = array_map(function($array) {
    return $array['hoge2'];
}, $result);

$test2 = array_column($result, 'hoge2');

print_r($test1);
print_r($test2);

echo "----------\n";

$result2 = [
    'line1' => [
        'hoge1' => 'a1',
        'hoge2' => 'a2',
        'hoge3' => 'a3'
    ],
    'line2' => [
        'hoge1' => 'b1',
        'hoge2' => 'b2',
        'hoge3' => 'b3'
    ],
    'line3' => [
        'hoge1' => 'c1',
        'hoge2' => 'c2',
        'hoge3' => 'c3'
    ]
];

$test3 = array_map(function($array) {
    return $array['hoge2'];
}, $result2);

$test4 = array_column($result2, 'hoge2');

print_r($test3);
print_r($test4);

echo "----------\n";

$result3 = [
    5 => [
        'hoge1' => 'a1',
        'hoge2' => 'a2',
        'hoge3' => 'a3'
    ],
    7 => [
        'hoge1' => 'b1',
        'hoge2' => 'b2',
        'hoge3' => 'b3'
    ],
    9 => [
        'hoge1' => 'c1',
        'hoge2' => 'c2',
        'hoge3' => 'c3'
    ]
];

$test5 = array_map(function($array) {
    return $array['hoge2'];
}, $result3);

$test6 = array_column($result3, 'hoge2');

print_r($test5);
print_r($test6);

とりあえずキーはリセットされる。でも設定でキーにするものを指定することもできる。とりあえずデフォルトの動作を確認したかった。