LoginSignup
0
0

PHPの多次元配列から特定のキーの値を取り出す

Posted at

普通のPHPerなら知ってて当然かもしれないので自分用の覚え書き。
ユーザー情報等のデータベースを扱うことがよくあって、FETCH_ASSOC|FETCH_UNIQUEなんかでデータを取り出すと

print_r($alldata);
/*
Array
(
    [1] => Array
        (
            [id] => 1
            [account] => suzuki
            [sei] => 鈴木
            [mei] => 一郎
            [seikana] => すずき
            [meikana] => いちろう
        )
    [3] => Array
        (
            [id] = 3
            [account] => tanaka
            [sei] => 田中
            [mei] => 次郎
            [seikana] => たなか
            [meikana] => じろう
        )
    [10] => Array
        (
            [id] => 10
            [account] => sato
            [sei] => 佐藤
            [mei] => 花子
            [seikana] => さとう
            [meikana] => はなこ
        )
)
*/

こんなふうになってて、この中から'account'のリストを取り出したい、というとき。

//BEFORE array_column
foreach (array_values($alldata) as $v) {
    $accounts[] = $v['account'];
}
print_r($accounts);

/*
Array
(
    [0] => suzuki
    [1] => tanaka
    [2] => sato
)
*/

// $accountsのキーをidにしたいとき
foreach (array_values($alldata) as $v) {
    $accounts[$v['id']] = $v['account'];
}
print_r($accounts);

/*
Array
(
    [1] => suzuki
    [3] => tanaka
    [10] => sato
)
*/

といった感じだったのが、array_columnを使うと

//AFTER array_column
$accounts = array_column($alldata, 'account');
print_r($accounts);
//略

// $accountsのキーをidにしたいとき
$accounts = array_column($alldata, 'account', 'id');
print_r($accounts);
//略

と簡単。

3次元配列の場合は追って調べて書く。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0