PHPのarray_merge関数を再理解する
今日はarray_merge()関数がバグっていたので再調査しました。
定義: array_merge — 1 つ以上の配列をマージします
仕様: array array_merge(array $array1 [, array $...])
説明:
1. 1 つ以上の配列のセルを結合し、1 つの配列の値を前の配列に追加します。
2. 入力配列に同じ文字列キー名がある場合、キー名の後の値が前の値を上書きします。ただし、配列に数値キーが含まれている場合、後続の値は元の値を上書きせず、追加されます。
3. 配列のみが指定され、その配列が数値的にインデックス付けされている場合、キー名は継続的に再インデックス付けされます。
この機能はマニュアルに詳細な例が記載されており、非常に多用途で実用的です。
今日私が遭遇した問題は、マニュアルに警告があったのに、これまで気付かず、致命的なエラーが発生したということでした。以下の通り:
PHP >= バージョン 5.0、array_merge() は配列型パラメータのみを受け入れます。ただし、キャストを使用して他の型を組み合わせることができます。
foreach やその他のコードによって生成される配列変数に注意してください。変数を空の配列に初期化するか、マージ中に強制変換を実行してください。そうでないと、あなたはとても苦しむことになるでしょう。したがって、変数を初期化する習慣を維持することもお勧めします。
PHP で配列をマージする場合には 2 つの状況があります
1. 2 つの配列が同じ文字列キー名を持つ場合:
出力は次のとおりです:
後者が前者を置き換えることに注意してください。ただし、array_merge_recursive() を使用すると、部分配列として保持して存在できます。例:
出力は次のとおりです:
2. 2 つの配列が同じ数値キー名を持つ場合:
結果は次のとおりです:
このとき、配列に同じ数値キー名が含まれている場合、後続のキー値は前の値を上書きせず、後続のキー値が順番に増加して最後に追加されます。分かりますか^_^
1. 最も簡単な方法: +
次のコードを使用します:
$r1 = array('a'=>1,'b'=>3,'c'=> 5 ,'d'=>7,'e'=>9);
$r2 = array('f'=>2,'g'=>4,'h'=>6,' i '=>8,'j'=>10);
$r = $r1+$r2;
echo '
';<br> print_r($r);<br> echo ''