【PHP】array_keys()で配列や連想配列のキーを取得する!

(この記事は2022年7月17日に投稿されました。)

PHPで配列や連想配列のキーを取得する方法として、array_keys()があります。

array_keys()とは指定した配列のキーを取り出す関数であり、配列を指定することで配列のキーを返り値として返すようになります。

この関数は最大で3つのパラメータを指定でき、第2パラメータを指定すると、取り出したい要素のキーを設定することができます。

そして、第3パラメータを指定すると、型まで厳密なチェックを行ってキーを取得するようになります。

また1次元配列だけでなく、2次元や3次元のような多次元配列や連想配列のキーを取り出すこともできます。

今回はPHPのarray_keys()で配列や連想配列のキーを取得する方法について紹介していきます。

この記事はこんな方におすすめ
・PHPで指定した配列や連想配列からキーを取得したい人




array_keys()とは

冒頭でも言いましたが、array_keys()とは、指定した配列のキーを取り出す関数となります。

全てのキーを取り出すため、配列形式で返されるようになります。

array_keys()の書き方

array_keys()の書き方は下記のようになります。

array_keys()は基本1つの必須パラメータを指定すると使用することができます。

そして、2つの任意パラメータを指定することができ、最大で3つのパラメータを指定して使用することができます。

array_keys()のパラメータ

array_keys()のパラメータは下記のようになります。

  1. 対象の配列(必須):
    キーを取得したい配列名を指定する
  2. 検索する値(任意):
    キーを取得したい要素の値を指定する
  3. 厳密な比較(任意):
    厳密な比較をするかしないかをTRUE/FALSEで指定する
    (デフォルトはfalse)

array_rand()は必須なパラメータとして対象の配列を指定します。

そして、任意なパラメータとして「検索する値」や「厳密な比較」を指定することができます。

array_keys()で配列のキーを取得するサンプルコード

array_keys()で配列のキーを取得するサンプルコードをご紹介します。

ここでは、下記の2つの場合でarray_keys()を使用します。

  1. 要素が存在する配列を指定した場合
  2. 要素が空の配列を指定した場合

要素が存在する配列を指定した場合

要素が存在する配列を指定した場合に、array_keys()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

要素が存在する配列を指定した場合にarray_keys()を使用した結果

対象の配列の要素が複数存在する場合は、配列の中からランダムに要素のキーが取り出されるようになります。

そのため、要素のキーである「0〜3」が配列で表示されています。

要素が空の配列を指定した場合

要素が空の配列を指定して、array_keys()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

要素が空の配列を指定した場合にarray_keys()を使用した結果

要素が空の配列を指定した場合は、配列のからキーが取り出されません。

そのため、空の配列が表示されています。

array_keys()に検索する値を指定して配列のキーを取得するサンプルコード

array_keys()の検索する値を指定して配列のキーを取得するサンプルコードをご紹介します。

ここでは、下記の2つの場合でarray_keys()を使用します。

  1. 配列に存在する要素を指定した場合
  2. 配列に存在しない要素を指定した場合
  3. 配列に重複する要素を指定した場合

配列に存在する要素を指定した場合

検索する値に「配列に存在する要素」を指定して、array_keys()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

配列に存在する要素を指定した場合にarray_keys()を使用した結果

配列に存在する要素を指定した場合は、指定した要素のキーが取り出されるようになります。

そのため、「ドイツ」のキーである「1」が表示されています。

配列に存在しない要素を指定した場合

検索する値に「配列に存在しない要素」を指定して、array_keys()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

配列に存在しない要素を指定した場合にarray_keys()を使用した結果

array_keys()の検索する値に存在しない配列の要素を指定すると、キーが取り出されません。

そのため、空の配列が表示されています。

配列に重複する要素を指定した場合

配列に重複する要素を指定して、array_keys()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

配列に重複する要素を指定した場合にarray_keys()を使用した結果

配列に重複する要素を指定すると、該当するキーが全て取り出されるようになります。

そのため、「イタリア」のキーである「0」と「4」が表示されています。

array_keys()で厳密な比較を行って配列のキーを取得する場合

array_keys()で厳密な比較を行って配列のキーを取得するには、第3パラメータに「TRUE」を指定します。

array_keys()は型が違ってても、値が同じであれば配列のキーを取得することができます。

しかし、厳密な比較を行うと値だけでなく型までを比較して処理が行われるようになります。

⚫︎ index.php

⚫︎ 実行結果

array_keys()で厳密な比較を行って、配列のキーを取得した結果

第3パラメータにTRUEを指定すると、厳密な比較を行うことができます。

そのため、TRUEを指定しない場合に、int型の「90」を指定するとキーを取得できていますが、TRUEを指定した場合では、キーを取得できていません。

array_keys()で多次元配列のキーを取得するサンプルコード

array_keys()で多次元配列のキーを取得するサンプルコードをご紹介します。

2次元配列のキーを取得する場合

2次元配列のキーを取得する場合に、array_keys()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

array_keys()で2次元配列のキーを取得した結果

array_keys()で2次元配列の要素のキーを取得しています。

また、配列の後ろにインデックスを1つ指定することで、2次元配列内にある1次元配列の要素のキーを取得することができます。

3次元配列のキーを取得する場合

3次元配列のキーを取得する場合に、array_keys()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

array_keys()で3次元配列のキーを取得した結果

array_keys()で3次元配列の要素のキーを取得しています。

また、配列の後ろにインデックスを1つ指定することで、3次元配列内にある2次元配列の要素のキーを取得することができます。

そして、配列の後ろにインデックスを2つ指定することで、3次元配列内にある1次元配列の要素のキーを取得することができます。

array_keys()で連想配列のキーを取得するサンプルコード

array_keys()で連想配列のキーを取得するサンプルコードをご紹介します。

⚫︎ index.php

⚫︎ 実行結果

array_keys()で連想配列のキーを取得した結果

array_keys()によって、連想配列のキーを取得しています。

配列や連想配列の値を取得する場合

配列や連想配列の値を取得する場合は、array_values()を使用します。

array_values()とは、配列の全ての値を取得する関数となります。

⚫︎ index.php

⚫︎ 実行結果

array_values()で配列や連想配列の値を取得した結果

array_values()によって指定した配列や連想配列の値を取得しています。

まとめ

⚫︎ array_keys()とは指定した指定した配列のキーを取り出す関数である

⚫︎ array_keys()は最大で3つのパラメータを指定することができる
・ 対象の配列(必須)
・ 検索する値(任意)
・ 厳密な比較(任意)

⚫︎ 要素が存在する配列に対してarray_keys()を使用すると、配列のキーが返される

⚫︎ 要素が空の配列に対してarray_keys()を使用すると、キーを取得できず、空の配列が返される

⚫︎ array_keys()の検索する値に「配列に存在する要素」を指定すると、指定した要素のキーが返される

⚫︎ array_keys()の検索する値に「配列に存在しない要素」を指定するとキーを取得できず、空の配列が返される

⚫︎ array_keys()で厳密な比較を行うには、第3パラメータにTRUEを指定する

⚫︎ array_keys()は、1次元配列のキーだけでなく、2次元配列や3次元配列のような多次元配列のキーを取得することができる

⚫︎ array_keys()は、配列のキーだけでなく、連想配列のキーも取得することができる

⚫︎ 配列や連想配列の値を取得するには、array_values()を使用する

コメントを残す

メールアドレスが公開されることはありません。