【PHP】array_flip()で配列や連想配列のキーと値を入れ替える!

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

PHPで配列や連想配列のキーと値を入れ替える関数として、array_flip()があります。

array_flip()とは指定した配列のキーと値を入れ替える関数になります。

例えば、「[‘a’, ‘b’, ‘c’]」という配列にarray_flip()を使用すると、「[a] => 0 [b] => 1 [c] => 2」の配列が返されるようになります。

しかし、キーに変更できない配列に対して使用するとエラーになりますので注意してください。

そして、array_flip()は配列に対応した関数であるため1次元配列だけでなく、2次元配列や3次元配列のような多次元配列や連想配列にも使用することができます。

また、他の関数や構文と組み合わせて使用することで、キーだけ取り出したり、指定したキーのみを変更したりもできるので、配列の細かな操作をするなら先にarray_flip()を使用しましょう。

今回はPHPのarray_flip()で配列や連想配列のキーと値を入れ替える方法について紹介していきます。

この記事はこんな方におすすめ
・PHPで配列や連想配列のキーと値を入れ替えたい人




array_flip()とは

冒頭でも言いましたが、array_flip()とは、指定した配列のキーと値を入れ替える関数となります。

キーと値を入れ替えることから、指定した配列の値が「キー」、キーが「値」となった配列を返り値として返すようになります。

array_flip()の書き方

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

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

array_flip()パラメータ

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

  1. 対象の配列(必須):
    キーと値を入れ替えたい配列名を指定する

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

array_flip()で配列のキーと値を入れ替えるサンプルコード

array_flip()で配列のキーと値を入れ替えるサンプルコードをご紹介します。

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

  1. 配列に一意性の要素が存在する場合
  2. 配列に重複する要素が存在する場合
  3. 配列に小数の要素が存在する場合
  4. 配列に真偽値の要素が存在する場合

配列に一意性の要素が存在する場合

配列に一意性の要素が存在する場合にarray_flip()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

配列に一意性の要素が存在する場合にarray_flip()を使用した結果

array_flip()によって、キーと値が入れ変わって表示されるようになります。

そのため、「東京〜品川」の値がキーとなり、「0〜5」が値となって表示されています。

配列に重複する要素が存在する場合

配列に重複する要素が存在する場合にarray_flip()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

配列に重複する要素が存在する場合にarray_flip()を使用した結果

重複する要素が存在する場配列にarray_flip()を使用すると、最後の値がキーとして使用されます。

そのため、「秋葉原」のキーが「5」になって表示されています。

配列に小数の要素が存在する場合

配列に小数の要素が存在する場合にarray_flip()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

配列に小数の要素が存在する場合にarray_flip()を使用した結果

小数はキーに変換できないため、小数の要素が存在する配列にarray_flip()を使用するとエラーが発生します。

配列に真偽値の要素が存在する場合

配列に真偽値の要素が存在する場合にarray_flip()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

配列に真偽値の要素が存在する場合にarray_flip()を使用した結果

真偽値もキーに変換できないため、真偽値の要素が存在する配列にarray_flip()を使用するとエラーが発生します。

array_flip()で多次元配列のキーと値を入れ替えるサンプルコード

array_flip()で多次元配列のキーと値を入れ替えるサンプルコードをご紹介します。

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

  1. 2次元配列の場合
  2. 3次元配列の場合

2次元配列に使用する場合

2次元配列にarray_flip()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

2次元配列の要素にarray_flip()を使用した結果

配列の後ろにインデックスを1つ指定することで、2次元配列内にある1次元配列のキーと値を入れ替えることができます。

しかし、2次元配列自体のキーと値を入れ替えることはできません。

3次元配列に使用する場合

3次元配列にarray_flip()を使用してみます。

⚫︎ index.php

⚫︎ 実行結果

3次元配列の要素にarray_flip()を使用した結果

配列の後ろにインデックスを2つ指定することで、3次元配列内にある1次元配列のキーと値を入れ替えることができます。

しかし、3次元配列や2次元配列自体のキーと値を入れ替えることはできません。

array_flip()で連想配列のキーと値を入れ替えるサンプルコード

array_flip()で連想配列のキーと値を入れ替えるサンプルコードをご紹介します。

⚫︎ index.php

⚫︎ 実行結果

array_flip()で連想配列のキーと値を入れ替えた結果

array_flip()によって、連想配列のキーと値が入れ変わっています。

そのため、「東京〜渋谷」がキーとなり、「tokyo〜shibuya」が値となって表示されています。

array_flip()を使って配列や連想配列のキーを取り出す場合

array_flip()を使って配列や連組配列のキーを取り出してみます。

まずは、配列のキーを取り出します。

⚫︎ index.php

⚫︎ 実行結果

array_flip()で配列のキーを取り出した結果

array_flip()で指定した配列のキーと値を入れ替えて、array_value()でキーを配列形式で取り出しています。

そして、キーと値を入れ替えた配列に対してforeach文を使用することで、キーを1つ1つ取り出しています。

もし、foreach文について詳しく知りたい場合は下記の記事をご参考ください。

続いて、連想配列のキーを取り出します。

⚫︎ index.php

⚫︎ 実行結果

array_flip()を使って連組配列のキーを取り出した結果

こちらも、array_flip()を使用した後に、array_value()でキーを配列形式で取り出しています。

そして、foreach文を使用することで、連想配列のキーを1つ1つ取り出しています。

また、上記の方法だけでなくarray_keys()を使用することでも、指定した配列のキーを取得することができます。

もし、array_keys()について詳しく知りたい場合は、下記のコードをご参考ください。

array_flip()で指定した配列や連想配列のキーを変更したい場合

array_flip()で指定した配列や連想配列のキーを変更してみます。

まずは、配列のキーを変更します。

⚫︎ index.php

⚫︎ 実行結果

array_flip()で指定した配列のキーを変更した結果

array_flip()でキーと値を入れ替え、再びキーと値を入れ替えることで「秋葉原」のキーが「1」から「akihabara」へ変更されています。

続いて、連想配列のキーを変更します。

⚫︎ index.php

⚫︎ 実行結果

array_flip()で指定した連想配列のキーを変更した結果

こちらも、array_flip()を2回使用することで「原宿」のキーが「0」から「Harajuku」へ変更されています。

まとめ

⚫︎ array_flip()とは指定した配列のキーと値を入れ替える関数である

⚫︎ array_flip()を使用するには1つのパラメータが必須となる
・ 対象の配列(必須)

⚫︎ 一意性の要素が存在する配列に対してarray_flip()を使用すると、キーと値が入れ変わった配列が返される

⚫︎ 重複する要素が存在する配列に対してarray_flip()を使用すると、最後の値がキーとなって返される

⚫︎ 小数の要素が存在する配列に対してarray_flip()を使用すると、エラーが発生する

⚫︎ 真偽値の要素が存在する配列に対してarray_flip()を使用すると、エラーが発生する

⚫︎ array_flip()は多次元配列のキーと値を入れ替えることもできる
(しかし、使用できるのは、多次元配列内にある1次元配列のみ)

⚫︎ array_flip()は連想配列のキーと値を入れ替えることもできる

⚫︎ array_flip()は、指定した配列や連組配列のキーを取り出すことができる

⚫︎ array_flip()は、指定した配列や連想配列のキーを変更することができる

コメントを残す

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