Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
array_keys() / array_values() / array_column()対応: PHP 4(2000)
配列のキーや値だけを取得したり、キーと値を入れ替える関数です。連想配列の操作で頻繁に使用します。
構文
// 配列のすべてのキーを取得します。 array_keys(配列, 検索する値, 厳密な比較); // 配列のすべての値を取得します。 array_values(配列); // 多次元配列から特定のカラムの値を取得します。 array_column(配列, カラムキー, インデックスキー); // 配列のキーと値を入れ替えます。 array_flip(配列);
関数一覧
| 関数 | 概要 |
|---|---|
| array_keys($array, $value, $strict) | 配列のすべてのキーを返します。第2引数を指定すると、その値に対応するキーだけを返します。 |
| array_values($array) | 配列のすべての値を返します。キーは0から振り直された数値キーになります。 |
| array_column($array, $column_key, $index_key) | 多次元配列から指定したカラムの値を取り出して配列にします。PHP 5.5で追加された関数です。 |
| array_flip($array) | 配列のキーと値を入れ替えます。値が重複している場合は最後の値のキーだけが残ります。 |
サンプルコード
<?php
$product = ['name' => 'ノートPC', 'price' => 98000, 'stock' => 15];
// すべてのキーを取得します。
$keys = array_keys($product);
print_r($keys); // 『name, price, stock』のキー一覧が返されます。
// すべての値を取得します。
$values = array_values($product);
print_r($values); // 『ノートPC, 98000, 15』の値一覧が返されます。
// 特定の値に対応するキーを検索します。
$scores = ['国語' => 80, '数学' => 95, '英語' => 80, '理科' => 90];
$subjects = array_keys($scores, 80);
print_r($subjects); // 80点の科目『国語, 英語』が返されます。
// 多次元配列から特定のカラムを取得します。
$users = [
['id' => 1, 'name' => '太郎', 'age' => 25],
['id' => 2, 'name' => '花子', 'age' => 30],
['id' => 3, 'name' => '次郎', 'age' => 20],
];
$names = array_column($users, 'name');
print_r($names); // 『太郎, 花子, 次郎』の配列になります。
// 第3引数でインデックスのキーを指定します。
$by_id = array_column($users, 'name', 'id');
print_r($by_id); // IDをキーにした連想配列になります。
// キーと値を入れ替えます。
$colors = ['r' => '赤', 'g' => '緑', 'b' => '青'];
$flipped = array_flip($colors);
print_r($flipped); // 値がキーに、キーが値になります。
概要
『array_keys()』は連想配列のキー一覧を取得するだけでなく、第2引数に値を渡すことで特定の値を持つキーだけを検索できます。第3引数に『true』を渡すと型も含めた厳密な比較を行います。
『array_values()』は連想配列を通常の数値添字配列に変換したい場合に便利です。『array_unique()』や『array_filter()』の後にキーが飛び飛びになった配列を、0から連番に振り直す目的でもよく使用されます。
『array_column()』はデータベースの結果セットやAPIのレスポンスなど、多次元配列から特定のカラムだけを抽出する際に非常に便利です。第3引数を指定すると、そのカラムの値をキーにした連想配列を作成できます。
配列の結合や分割については『array_merge() / array_combine()』、配列内の検索については『in_array() / array_search()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。