PHP は、強力な配列処理機能を提供するオブジェクト指向プログラミング言語です。実際の開発では、配列を調整する必要がある場面によく遭遇しますが、よくある要件の 1 つは配列のキーを変換することです。この記事では、PHP 配列のキーを変換する方法を紹介し、その際に注意すべき問題について読者に詳しく説明します。
1. array_combine() 関数を使用する
array_combine() 関数は、2 つの配列を結合して新しい配列を生成するために使用される PHP の関数です。使用法は次のとおりです。
array_combine(array $keys, array $values): array
この関数の最初のパラメータ $keys は、新しい関数のキー名を表す配列です。 2 番目のパラメータ $values も配列であり、新しい配列のキー値を表します。要素の数は等しくなければなりません。そうでない場合は false が返されます。
$keys 配列と $values 配列内の要素の順序は 1 対 1 に対応する必要があります。たとえば、$keys 配列の最初の要素は、$values 配列の最初の要素に対応します。
以下は、添え字として数字を含む配列 $name を、添え字として文字列を含む配列 $new_name に変換する例です:
$name = array('0' => 'Alice', '1' => 'Bob', '2' => 'Carol'); $new_name = array_combine(array('a', 'b', 'c'), $name); print_r($new_name);
出力結果は次のとおりです:
Array ( [a] => Alice [b] => Bob [c] => Carol )
この例では、$name 配列内の数値添字が文字列添字に変換されますが、配列内の値は変更されません。これは、array_combine() 関数を使用し、それに新しいキー名を付けたためです。
2. array_flip() 関数を使用する
array_flip() 関数は、配列内のキーと値を交換するために使用される PHP の関数です。使用法は次のとおりです。
array_flip(array $trans) : array
この関数のパラメータ $trans は、交換された配列を表す配列です。元の配列のキーが新しい配列の値になり、元の配列の値が新しい配列のキーになる新しい配列を返します。
以下は、添字として数値を含む配列 $age を、添字として年齢値を含む配列 $info に変換する例です:
$age = array('Alice' => 25, 'Bob' => 35, 'Carol' => 30); $info = array_flip($age); print_r($info);
出力結果は次のとおりです:
Array ( [25] => Alice [35] => Bob [30] => Carol )
この例では、$age 配列内の文字列添字が数値添字に変換されますが、配列内の値は変更されません。これは、array_flip() 関数を使用し、それに $age 配列を渡したためです。
元の配列に重複した値がある場合、変換されたキーは以前のキーを上書きすることに注意してください。したがって、array_flip() 関数を使用する場合は、元の配列内の値が一意であることを確認する必要があります。
3. array_map() 関数を使用する
array_map() 関数は、配列の各要素にコールバック関数を適用するために使用される PHP の関数です。使用法は次のとおりです:
array_map(callable $callback, array ...$arrays) : array
この関数 $callback の最初のパラメータは、適用されるコールバック関数です。の各要素の配列に変換します。 2 番目のパラメータの後の配列は、操作する必要がある配列です。要素の数は等しくない場合があります。この関数は新しい配列を生成します。その各要素は $callback 関数の戻り値です。
次の例は、添え字として数値を含む配列 $price を、添え字として浮動小数点数を含む配列 $actual_price に変換する例です:
$price = array('Alice' => 10, 'Bob' => 15.5, 'Carol' => 20); $actual_price = array_map(function($p) { return round($p * 0.8, 2); }, $price); print_r($actual_price);
出力結果は次のとおりです:
Array ( [Alice] => 8.00 [Bob] => 12.40 [Carol] => 16.00 )
この例では、array_map() 関数を使用し、それにコールバック関数を渡します。この関数は、各価格値に 0.8 を乗算し、小数点第 2 位に四捨五入して、新しい価格値を返します。最後に、新しい配列 $actual_price を取得します。この配列では、添え字が人の名前になり、配列内の値が計算された実際の価格になります。
$callback 関数は値を返さなければならないことに注意してください。そうでない場合は、警告が生成されます。
4. foreach ループの使用
上記の関数に加えて、foreach ループを使用して配列のキーを手動で変換することもできます。以下は、数値の添字を持つ配列 $id を文字列の添字を持つ配列 $name_id に変換する例です:
$id = array(1001, 1002, 1003); $name = array('Alice', 'Bob', 'Carol'); $name_id = array(); foreach($id as $i => $val) { $name_id[$name[$i]] = $val; } print_r($name_id);
出力結果は次のとおりです:
Array ( [Alice] => 1001 [Bob] => 1002 [Carol] => 1003 )
この例では、 foreach ループを実行し、ループ内で配列を変換しました。具体的には、$id 配列内の各要素を反復処理し、要素の添字を使用して $name 配列から対応する値を取得します。次に、この新しいキーと値のペアを $name_id 配列に追加します。
foreach ループを使用する場合、配列内の要素を変更する場合は、配列への参照を使用する必要があることに注意してください。
5. 概要
この記事では、array_combine() 関数、array_flip() 関数、array_map() 関数、foreach ループを使用する方法など、PHP 配列のキーを変換する方法を紹介します。これらの方法にはそれぞれ異なる特徴があり、実際のニーズに応じて異なる方法を選択できます。
これらのメソッドを使用する場合、新しいキー名は一意である必要があり、メソッドが異なれば結果も異なる可能性があることに注意することが重要です。したがって、配列のキーを変換するときは、慎重に検討して適切な方法を選択する必要があります。
以上がPHP配列のキー値を変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。