PHPで配列のキー(key)を取得する方法を解説!
PHPで配列のキー(key)を取得する方法について全てのキーや、特定のキー、現在のカーソル位置のキーなどそれぞれのパターン毎にサンプルコード付きで解説します。
PHPで配列のキー(key)を取得したい
PHPで配列のキー(key)を取得したい時があります。配列の全てのキー(key)を取得したい時、特定のキー(key)を取得したい時、現在のカーソル位置のキー(key)を取得したい時など、今回はいろいろなケースで配列のキーを取得する方法について紹介したいと思います。
配列のキー(key)を取得するにあたって、PHPの配列について下記の記事でご紹介していますので、併せて確認してみましょう。
PHPで配列のキー(key)を取得する方法
PHPで配列の全てのキー(key)を取得する
PHPで配列の全てのキー(key)を取得するにはarray_keys
関数を用います。
array_keys
関数は、パラメーターにキー(key)を取得したい配列をセットする事で、配列のキー(key)を値(value)にした配列が戻ります。
array_keys関数
array_keys( 配列 );
添字配列と連想配列でarray_keys
関数の実行結果を確認してみましょう。
添字配列
$subscriptArray = [
'赤',
'青',
'白',
'黄',
'緑',
'白',
];
連想配列
$associativeArray = [
'red' => '赤',
'blue' => '青',
'#fff' => '白',
'yellow' => '黄',
'green' => '緑',
'white' => '白',
];
この2つの配列からすべてのキー(key)を取得します。
添字配列も、連想配列でも配列のキー(key)が値(value)になった配列を、取得する事ができました。
PHPで配列の特定値(value)の最初のキー(key)を取得する
PHPで配列の特定値(value)の最初のキー(key)を取得するには、array_search
関数を用います。
array_search
関数は、第一引き数へ検索したい値を、第二引き数へ検索対象の配列をセットします。
array_search関数
array_search( 検索したい値, 配列);
array_search
関数でも、先程と同じ配列から値(value)が’白’
のキー(key)を取得してみます。
添字配列
$subscriptArray = [
'赤',
'青',
'白',
'黄',
'緑',
'白',
];
連想配列
$associativeArray = [
'red' => '赤',
'blue' => '青',
'#fff' => '白',
'yellow' => '黄',
'green' => '緑',
'white' => '白',
];
array_search
関数を使って値(value)が'白'
の最初のキー(key)を取得した結果は、下記になります。
添字配列の場合はインデックス「2」が、連想配列の場合は「#fff
」のキー(key)が取得できました。
配列内に’白’
は2つ存在しますが、最初のキー(key)が取得されています。
次に、全ての’白’
のキー(key)を取得する方法についてご紹介します。
PHPで配列の特定値(value)の全てのキー(key)を取得する
array_keys
関数では、配列の全てのキー(key)を取得する事ができますが、関数の第二引き数へ検索したい値をセットする事で、特定のキー(key)を取得する事もできます。
array_keys
関数とはパラメータが逆の為、気を付けましょう。
array_keys関数
array_keys( 配列, 検索したい値 );
それでは、先程と同じ配列から’白’
のキー(key)を取得してみます。
添字配列の場合はインデックス「2」と「5」が、連想配列の場合は「#fff
」と「white
」のキー(key)が取得できました。
現在のカーソル位置のキー(key)を取得
PHPのkey
関数で現在のカーソル位置のキー(key)を取得する事ができます。
key
関数については、下記の配列のインデックスを指定して最初の要素を取得する方法で解説しています。
ここでは、配列のカーソルを'白'
まで進めkey
関数でキー(key)を取得する方法を、サンプルコードで紹介したいと思います。
配列をforeach
関数を使ってループしカーソルを1つずつ進めています。値(value)が'白'
の時にkey
関数を用いてキー(key)を出力しました。
array_keys
関数と同じ結果を取得する事ができました。
最初にヒットしたキー(key)のみ取得したい場合はif
文の中でbreak
するとarray_search
関数と同じ結果を取得する事も可能です。