PHPでWeb開発を行っていると、データベースの検索結果やAPIのレスポンスなど、複雑な「連想配列」を扱う場面が毎日のようにあります。
しかし、PHPには配列操作の関数が山のようにあり、どれを使えば最適なのか迷ってしまうことも少なくありません。
「すべてのキーを一覧で欲しいのか」「ループの中でキーを使いたいのか」、あるいは「値からキーを逆引きしたいのか」によって、選ぶべき方法は異なります。
この記事では、PHPにおける連想配列のキー取得テクニックについて、基本の関数から応用的な検索方法、そしてPHP 7.3以降で導入された便利な関数まで、サンプルコード付きで詳しく解説します。
![]() 執筆者:マヒロ |
|
全てのキーを配列として取得する array_keys
連想配列に含まれる「すべてのキー」をまとめて取り出したい場合は、標準関数の array_keys を使用するのが最も簡単で一般的です。
取得したキーは、新しい「インデックス配列(通常の配列)」として返されます。
array_keys の基本的な使い方
引数に対象の連想配列を渡すだけで、キーの一覧を取得できます。
<?php
// 連想配列の定義
$userData = [
'name' => '田中 太郎',
'age' => 28,
'gender' => 'male',
'city' => 'Tokyo'
];
// すべてのキーを取得
$keys = array_keys($userData);
// 結果を表示
print_r($keys);
?>
実行結果
Array
(
[0] => name
[1] => age
[2] => gender
[3] => city
)
array_keys($userData) を実行すると、元の連想配列のキー部分(’name’, ‘age’ …)だけが抽出され、$keys という新しい配列に格納されます。
CSVの見出し行を作ったり、特定のパラメータが揃っているかチェックしたりする際に非常に便利です。
特定の値を持つキーだけを取得する(第2引数)
実は array_keys は第2引数に「検索したい値」を指定することで、その値を持つキーだけをフィルタリングして取得することも可能です。
<?php
$scores = [
'UserA' => 80,
'UserB' => 100,
'UserC' => 80,
'UserD' => 50
];
// 値が「80」のキーだけを取得
$targetKeys = array_keys($scores, 80);
print_r($targetKeys);
?>
実行結果
Array
(
[0] => UserA
[1] => UserC
)
array_keys($scores, 80) とすることで、値が 80 である要素のキー(UserAとUserC)だけが抽出されました。
同じ値を持つ要素が複数ある場合に、それらのキーをすべてリストアップしたい場合に役立ちます。
ループ処理でキーと値を順に取り出す foreach
配列の中身を一つずつ処理しながらキーも使いたい場合は、関数を使うよりも制御構文である foreach を使うのが定石です。
実務のコードでは、このパターンが最も頻繁に登場します。
キーと値を同時に取得する構文
foreach ($array as $key => $value) という書き方をすることで、ループの中で現在の要素のキーを利用できます。
<?php
$products = [
'apple' => 150,
'orange' => 100,
'banana' => 200
];
echo "<ul>\n";
foreach ($products as $name => $price) {
// キー(商品名)と値(価格)を使って出力
echo "<li>" . $name . " は " . $price . "円です。</li>\n";
}
echo "</ul>";
?>
実行結果
<ul>
<li>apple は 150円です。</li>
<li>orange は 100円です。</li>
<li>banana は 200円です。</li>
</ul>
$products as $name => $price の部分がポイントです。
矢印(=>)の左側変数($name)にキーが、右側変数($price)に値が代入されます。
変数名は自由に決められるため、中身が何であるか分かりやすい名前(ここでは $name と $price)をつけるのが、読みやすいコードを書くコツです。
値から対応するキーを検索する array_search
「この値を持っているキーはどれ?」というように、値からキーを逆引きしたい場合は、array_search 関数を使用します。
ただし、見つかった「最初の1つ」しか返さない点に注意が必要です。
特定の値を検索してキーを取得する
<?php
$members = [
101 => 'Suzuki',
102 => 'Tanaka',
103 => 'Yamada',
104 => 'Tanaka' // 同名のメンバーがいる場合
];
// 'Tanaka' という値を持つキーを検索
$id = array_search('Tanaka', $members);
var_dump($id);
?>
実行結果
int(102)
array_search('Tanaka', $members) は、配列の中から 'Tanaka' という値を探し、最初に見つかった要素のキーである 102 を返しています。
ID 104 の Tanaka さんも存在しますが、array_search は最初に見つかった時点で検索を終了するため、102 だけが返されます。
重複する可能性があるデータの検索には注意しましょう。
また、見つからなかった場合は false が返されます。
最初や最後のキーだけをピンポイントで取得する
配列の「先頭のキー」や「末尾のキー」だけが欲しい場合、以前はポインタ操作などの面倒な手順が必要でしたが、現在は便利な専用関数が用意されています。
PHP 7.3以降であれば、以下の関数を使うのがベストプラクティスです。
array_key_first と array_key_last
<?php
$fruits = [
'red' => 'Apple',
'yellow' => 'Banana',
'purple' => 'Grape'
];
// 最初のキーを取得
$firstKey = array_key_first($fruits);
// 最後のキーを取得
$lastKey = array_key_last($fruits);
echo "最初のキー: " . $firstKey . "\n";
echo "最後のキー: " . $lastKey . "\n";
?>
実行結果
最初のキー: red
最後のキー: purple
array_key_first は配列の内部ポインタを動かさずに、純粋に「最初の要素のキー」を取得します。
array_key_last はその逆で「最後の要素のキー」を取得します。
これらは元の配列に影響を与えないため、非常に安全かつ高速にキーを取得できます。
応用編:キーが存在するか確認する array_key_exists
キーを取得する前に、「そもそもそのキーが存在するのか?」を確認したい場面も多いでしょう。
その場合は array_key_exists 関数を使います。
キーの存在チェックを行う
<?php
$config = [
'host' => 'localhost',
'user' => 'root',
// 'password' キーは未定義
];
if (array_key_exists('password', $config)) {
echo "パスワードは設定されています。";
} else {
echo "パスワードキーが見つかりません。";
}
?>
実行結果
パスワードキーが見つかりません。
array_key_exists('キー名', $配列) で、指定したキーが配列内に存在するかどうかを真偽値(true/false)で返します。
似た機能に isset() がありますが、isset() は「キーが存在しても値が null だった場合」に false を返してしまいます。
値が null である可能性も含めて「キーの有無」だけを厳密に判定したい場合は、必ず array_key_exists を使いましょう。
PHPのスキルを活かして年収を上げる方法
以上、PHPで連想配列のキーを取得する方法について解説してきました。
なお、PHPのスキルがある場合には、「転職して年収をアップさせる」「副業で稼ぐ」といった方法を検討するのがおすすめです。
PHPエンジニアの需要は非常に高く求人数・案件数も多いため、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。
なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。
併せて、副業案件を獲得できるエージェントにも登録しておくと、空いている時間を活かして稼げるようなPHPの案件を探しやすくなります。
転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。



