【PHP8.x】array_flip関数の使い方

作成日: 更新日:

array_flip関数は、PHPにおいて配列のキーと値を入れ替える処理を実行する関数です。この関数は、指定された配列の各要素に対して、現在のキーを新しい要素の値とし、現在の値を新しい要素のキーとして再構成し、新しい配列を生成します。

例えば、商品のIDが値で、商品名がキーである配列がある場合、array_flip関数を使用すると、商品のIDがキーで、商品名が値となるような配列に簡単に変換できます。これは、特定の値をキーとして高速に検索したい場合や、配列の構造を反転させたい場合に非常に便利です。

この関数を使用する際にはいくつかの注意点があります。もし元の配列に同じ値が複数存在する場合、array_flip関数は、重複する値のうち、最も配列の後方に位置する値に対応するキーを優先します。つまり、同じ値が新しいキーとなった際、その値に対応する最も最後の元のキーが新しい値として格納され、それより前のキーは上書きされて失われますので、データの重複には注意が必要です。

また、元の配列の値が文字列や数値などのスカラー値ではない場合、例えばオブジェクトなどである場合、PHPはその値を文字列に変換しようと試みます。もし値を文字列に変換できない場合は、その値は新しいキーとして利用できず、警告が発生する可能性があります。

array_flip関数は、処理が成功した場合は、キーと値が入れ替わった新しい配列を返します。配列の要素間の関係性を変更し、データ操作を効率化するための重要な機能の一つとして活用できます。

基本的な使い方

構文(syntax)

<?php
$input_array = ["fruit" => "apple", "color" => "red"];
$flipped_array = array_flip($input_array);
print_r($flipped_array);
?>

引数(parameters)

array $array

  • array $array: キーと値を入れ替えた新しい配列を返します。入力配列のキーは値に、値はキーになります。

戻り値(return)

array

array_flip関数は、引数として渡された配列のキーと値を入れ替えた新しい配列を返します。この際、元の配列のキーは値になり、元の配列の値はキーとなります。

サンプルコード

PHP array_flipでキーと値を入れ替える

<?php

// array_flip() 関数の基本的な使い方を示すサンプルコードです。
// この関数は、配列のキーと値を入れ替えた新しい配列を返します。

// 1. 元になる連想配列を定義します。
// ここでは、製品名をキー、その製品コードを値とします。
$originalArray = [
    'Keyboard' => 'KB001',
    'Mouse'    => 'MS002',
    'Monitor'  => 'MN003',
];

echo "--- 元の配列 ---\n";
print_r($originalArray);

// 2. array_flip() を使って配列のキーと値を入れ替えます。
// array_flip() は新しい配列を生成して返すため、元の配列は変更されません。
$flippedArray = array_flip($originalArray);

echo "\n--- キーと値が入れ替わった配列 ---\n";
print_r($flippedArray);

?>

PHPのarray_flip関数は、与えられた配列のキーと値を入れ替えた新しい配列を生成する関数です。この関数は、array $arrayとして指定された配列を引数に取ります。

戻り値として、キーと値が入れ替わった新しい配列が返されますが、元の配列自体は変更されません。例えば、元の配列で'キー' => '値'だった要素は、'値' => 'キー'という形になります。

サンプルコードでは、まず製品名と製品コードを関連付けた連想配列$originalArrayを用意しています。ここでは'Keyboard' => 'KB001'のように、製品名をキー、製品コードを値として定義しています。

この$originalArrayarray_flip()に渡すことで、$flippedArrayという新しい配列が作成されます。$flippedArrayでは、元の製品コードが新しいキーに、元の製品名が新しい値として格納されます。具体的には、'KB001' => 'Keyboard'というようにデータが再構築されます。

この関数は、データの検索方法を変更したい場合や、既存のデータ構造を別の視点から利用したい場合に非常に有効です。

この関数を使用する際の注意点として、元の配列に同じ値が複数存在する場合、array_flipは最後に現れた値とそれに対応するキーのみを新しい配列に含めます。そのため、重複する値を持つ元のキーは失われるため、意図しないデータ欠落に十分注意してください。また、元の配列の値が文字列や整数以外の型である場合、PHPはキーとして適切な型に変換しようとします。例えばtrue1に、false0に、nullは空文字列に変換されますが、オブジェクトや配列を値として持つ場合はエラーが発生します。この関数は、値からキーを検索する逆引きのルックアップテーブルを作成したい場面で特に有効です。

【PHP8.x】array_flip関数の使い方 | いっしー@Webエンジニア