Help us understand the problem. What is going on with this article?

phpで連想配列から特定のカラムの値をkeyとvalueに指定して返す

連想配列で特定のカラムの値をkeyにして単一のカラムの値をvalueにしたい場合、別の配列を用意しそこにループ処理で値を詰め直すということをやっていました。

<?php
    $foods = array(
        array(
            'id' => 1,
            'name' => 'Sushi',
            'country' => 'Japan',
        ),
        array(
            'id' => 2,
            'name' => 'hamburger',
            'country' => 'America',
        ),
        array(
            'id' => 3,
            'name' => 'Pasta',
            'country' => 'Italia',
        )
    );
?> 

この配列のidをkeyにnameをvalueにします。

ループ処理を用いたやり方

<?php
    $foods_menu = array();
    foreach($foods as $key => $food){
        $id = $food['id'];
        $name = $food['name'];

        $food_menu[$id] = $name;
    }
?> 

こんな感じで毎度ループを回してました。

けれどarray_column関数を使えば毎度ループを回すことなく同じことが実現できます。

array_columnを用いたやり方

<?php
    $foods_menu = array_column($foods,'name','id');
?> 

第一引数に対象の配列、第二引数にvalueにしたいカラム、第三引数にkeyにしたいカラムを指定することで実現できます。
(第三引数を指定しなければ0からkeyが割り当てられます。)

便利なのでぜひ。

yujiro12
2年目エンジニアです
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away