・IT/Web系エンジニアの経験者の方
・どこの転職エージェントを利用しようか迷っている方
それなら、キッカケエージェントにご相談!
キッカケエージェントでは、少数精鋭のエージェントが、エンジニアの経験やスキル、志向性などをカウンセリングし、的確なアドバイスを提供します!
また、徹底した企業へのヒアリングにより、最適なマッチングを実現し、今では内定率が一般的なエージェントの2倍以上となっています!
転職エージェントに迷っている方、まずは無料でキャリア相談から!
(この記事は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()で配列や連想配列のキーと値を入れ替える方法について紹介していきます。
array_flip()とは
冒頭でも言いましたが、array_flip()とは、指定した配列のキーと値を入れ替える関数となります。
キーと値を入れ替えることから、指定した配列の値が「キー」、キーが「値」となった配列を返り値として返すようになります。
array_flip()の書き方
array_flip()の書き方は下記のようになります。
1 | <?php array_flip('対象の配列'); ?> |
array_flip()は1つの必須パラメータを指定することで使用することができます。
array_flip()パラメータ
array_flip()のパラメータは下記のようになります。
- 対象の配列(必須):
キーと値を入れ替えたい配列名を指定する
array_flip()は必須なパラメータとして対象の配列を指定します。
array_flip()で配列のキーと値を入れ替えるサンプルコード
array_flip()で配列のキーと値を入れ替えるサンプルコードをご紹介します。
ここでは下記の3つの場合で、array_flip()を使用します。
- 配列に一意性の要素が存在する場合
- 配列に重複する要素が存在する場合
- 配列に小数の要素が存在する場合
- 配列に真偽値の要素が存在する場合
配列に一意性の要素が存在する場合
配列に一意性の要素が存在する場合にarray_flip()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の配列: '; $metro1 = ['東京', '秋葉原', '上野', '五反田', '品川']; print_r($metro1); echo '⚫︎ array_flip()使用後: '; $metro1_flp = array_flip($metro1); print_r($metro1_flp); ?> |
実行結果
array_flip()によって、キーと値が入れ変わって表示されるようになります。
そのため、「東京〜品川」の値がキーとなり、「0〜5」が値となって表示されています。
配列に重複する要素が存在する場合
配列に重複する要素が存在する場合にarray_flip()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の配列: '; $metro2 = ['東京', '秋葉原', '上野', '五反田', '品川', '秋葉原']; print_r($metro2); echo '⚫︎ array_flip()使用後: '; $metro2_flp = array_flip($metro2); print_r($metro2_flp); ?> |
実行結果
重複する要素が存在する場配列にarray_flip()を使用すると、最後の値がキーとして使用されます。
そのため、「秋葉原」のキーが「5」になって表示されています。
配列に小数の要素が存在する場合
配列に小数の要素が存在する場合にarray_flip()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の配列: '; $metro3 = ['東京', '秋葉原', '上野', '五反田', '品川', 3.5]; print_r($metro3); echo '⚫︎ array_flip()使用後: '; $metro3_flp = array_flip($metro3); print_r($metro3_flp); ?> |
実行結果
小数はキーに変換できないため、小数の要素が存在する配列にarray_flip()を使用するとエラーが発生します。
配列に真偽値の要素が存在する場合
配列に真偽値の要素が存在する場合にarray_flip()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 | <?php echo '⚫︎ 対象の配列: '; $metro4 = ['東京', '秋葉原', '上野', '五反田', '品川', true]; print_r($metro4); echo '⚫︎ array_flip()使用後: '; $metro4_flp = array_flip($metro4); print_r($metro4_flp); ?> |
実行結果
真偽値もキーに変換できないため、真偽値の要素が存在する配列にarray_flip()を使用するとエラーが発生します。
array_flip()で多次元配列のキーと値を入れ替えるサンプルコード
array_flip()で多次元配列のキーと値を入れ替えるサンプルコードをご紹介します。
ここでは下記の2つの場合で、array_flip()を使用します。
- 2次元配列の場合
- 3次元配列の場合
2次元配列に使用する場合
2次元配列にarray_flip()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 | <?php echo '⚫︎ 対象の配列: '; $metro5 =[ ['東京', '秋葉原', '上野', '五反田', '品川'], ['渋谷', '原宿', '新宿', '恵比寿', '目黒'] ]; print_r($metro5); echo '⚫︎ array_flip()使用後: '; $metro5_flp = array_flip($metro5[0]); print_r($metro5_flp); ?> |
実行結果
配列の後ろにインデックスを1つ指定することで、2次元配列内にある1次元配列のキーと値を入れ替えることができます。
しかし、2次元配列自体のキーと値を入れ替えることはできません。
3次元配列に使用する場合
3次元配列にarray_flip()を使用してみます。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php echo '⚫︎ 対象の配列:'; $metro6 =[ [['東京', '秋葉原', '上野', '五反田'],['渋谷', '原宿', '新宿', '恵比寿']], [['池袋', '大塚', '大崎', '品川'],['神田', '田町', '高輪ゲートウェイ', '目黒']] ]; print_r($metro6); echo '⚫︎ array_flip()使用後-1:'; $metro6_flp1 = array_flip($metro6[0][0]); print_r($metro6_flp1); echo '⚫︎ array_flip()使用後-2:'; $metro6_flp2 = array_flip($metro6[1][1]); print_r($metro6_flp2); ?> |
実行結果
配列の後ろにインデックスを2つ指定することで、3次元配列内にある1次元配列のキーと値を入れ替えることができます。
しかし、3次元配列や2次元配列自体のキーと値を入れ替えることはできません。
array_flip()で連想配列のキーと値を入れ替えるサンプルコード
array_flip()で連想配列のキーと値を入れ替えるサンプルコードをご紹介します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php echo '⚫︎ 対象の連想配列:'; $metro7 =[ 'tokyo' => '東京', 'gotanda' => '五反田', 'ebisu' => '恵比寿', 'ikebukuro' => '池袋', 'kanda' => '神田', 'shibuya' => '渋谷', ]; print_r($metro7); echo '⚫︎ array_flip()使用後:'; $metro7_flp = array_flip($metro7); print_r($metro7_flp); ?> |
実行結果
array_flip()によって、連想配列のキーと値が入れ変わっています。
そのため、「東京〜渋谷」がキーとなり、「tokyo〜shibuya」が値となって表示されています。
array_flip()を使って配列や連想配列のキーを取り出す場合
array_flip()を使って配列や連組配列のキーを取り出してみます。
まずは、配列のキーを取り出します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php echo '⚫︎ 対象の配列:'; $metro8 = ['東京', '代々木', '池袋', '原宿', '新橋']; print_r($metro8); $metro_flp = array_flip($metro8); echo '⚫︎ array_flip()使用後:'; print_r($metro8_flp); echo '⚫︎ キーを配列形式で取得する:'; $metro8_val = array_values($metro8_flp); print_r($metro8_val); echo '⚫︎ キーを1つずつ取得する:'; foreach ($metro8_flp as $val) { echo $val; echo "\n"; } ?> |
実行結果
array_flip()で指定した配列のキーと値を入れ替えて、array_value()でキーを配列形式で取り出しています。
そして、キーと値を入れ替えた配列に対してforeach文を使用することで、キーを1つ1つ取り出しています。
もし、foreach文について詳しく知りたい場合は下記の記事をご参考ください。
続いて、連想配列のキーを取り出します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?php echo '⚫︎ 対象の連想配列:'; $metro8 = [ 'Shinawaga' => '東京', 'Yoyogi' =>'代々木', 'Ikebukuro' =>'池袋', 'Harajuku' =>'原宿', 'Shimbashi' =>'新橋' ]; print_r($metro8); echo '⚫︎ array_flip()使用後:'; $metro8_flp2 = array_flip($metro8); print_r($metro8_flp2); echo '⚫︎ キーを配列形式で取得する:'; $metro8_val = array_values($metro8_flp2); print_r($metro8_val); echo '⚫︎ キーを1つずつ取得する:'; foreach ($metro8_flp2 as $val) { echo $val; echo "\n"; } ?> |
実行結果
こちらも、array_flip()を使用した後に、array_value()でキーを配列形式で取り出しています。
そして、foreach文を使用することで、連想配列のキーを1つ1つ取り出しています。
また、上記の方法だけでなくarray_keys()を使用することでも、指定した配列のキーを取得することができます。
もし、array_keys()について詳しく知りたい場合は、下記のコードをご参考ください。
array_flip()で指定した配列や連想配列のキーを変更したい場合
array_flip()で指定した配列や連想配列のキーを変更してみます。
まずは、配列のキーを変更します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php echo '⚫︎ 対象の配列:'; $metro9 = ['東京', '秋葉原', '上野', '五反田']; print_r($metro9); echo '⚫︎ array_flip()使用後'; $metro9_flp1 = array_flip($metro9); print_r($metro9_flp1); echo '⚫︎ キー変更後'; $mtoro9_flp1['秋葉原'] = 'akihabara'; $mtoro9_flp1 = array_flip($mtoro9_flp1); print_r($mtoro9_flp1); ?> |
実行結果
array_flip()でキーと値を入れ替え、再びキーと値を入れ替えることで「秋葉原」のキーが「1」から「akihabara」へ変更されています。
続いて、連想配列のキーを変更します。
⚫︎ index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?php echo '⚫︎ 対象の連想配列:'; $metro9 = [ 'Shinawaga' => '東京', 'Yoyogi' =>'代々木', 'Ikebukuro' =>'池袋', '0' =>'原宿', 'Shimbashi' =>'新橋' ]; print_r($metro9); echo '⚫︎ array_flip()使用後'; $metro9_flp2 = array_flip($metro9); print_r($metro9_flp2); echo '⚫︎ キー変更後'; $metro9_flp2['原宿'] = 'Harajujku'; $metro9_flp2 = array_flip($metro9_flp2); print_r($metro9_flp2); ?> |
実行結果
こちらも、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()は、指定した配列や連想配列のキーを変更することができる