PHP で + または array_merge を使用して 2 つの配列を結合できることは誰もが知っていますが、それらの間にはまだ違いがあり、これらの違いを明確に理解していないと、プロジェクトでは致命的になります。この記事では、PHP で配列を結合する 2 つの方法をまとめて紹介します。必要な方は参考にしてください。
はじめに
私は以前から array_merge()
関数を使用して配列をマージしていましたが、最近転職した際に、配列のマージについての面接の質問に遭遇しました。最初に 2 つの配列を文字列に変換し、それらを結合してから配列出力に変換するという方法でした。その後、bulabula がこの考えは正しくないと言いましたが、それは確かに経験の問題によるものでした。またはコードを書きすぎたので、他の方法が思いつきません。今日、Baidu で検索したところ、「+」記号 array_merge()
这个函数,但最近我在换工作的时候遇到一道合并数组的面试题,我当时想的是将两个数组先转化为字符串,合并后再转化为数组输出,面试官说这个思路不太对,完了bulabula讲了一下数组基础的东西,然后确实是因为经验问题,或者是代码写太少,想不到还有什么方法,今天我百度了一下,原来还有‘+'号,
array_merge_recursive()
,也是可以用来合并数组的,根据我的记忆,我把那道题写出来看一下:
$a = array('color'=>'red',5,6); $b = array('color'=>'blue','type'=>'fruit',6,7); $arr = array_merge($a,$b); var_dump($arr);
array (size=6) 'color' => string 'blue' (length=4) 0 => int 5 1 => int 6 'type' => string 'fruit' (length=5) 2 => int 6 3 => int 7
要求是在不使用array_merge()
的情况的得到相同的效果;
(array_merge()
合并数组会把前一个数组中关联形式数组的键值相同的覆盖,索引形式的则按键值顺序合并在一起)
1.先用array_merge_recursive()函数来合并一下:
$a = array('color'=>'red',5,6); $b = array('color'=>'blue','type'=>'fruit',6,7); $arr = array_merge_recursive($a,$b); var_dump($arr);
输出结果:
array (size=6) 'color' => array (size=2) 0 => string 'red' (length=3) 1 => string 'blue' (length=4) 0 => int 5 1 => int 6 'type' => string 'fruit' (length=5) 2 => int 6 3 => int 7
从结果可以看出array_merge_recursive()
函数会把键值相同的值以一个新的关联数组的形式返回,并以这个键值作为二维数组的键值,其他索引形式则不会受影响。
比起array_merge()
的话就不会出现后面的数组键和前一个相同就把前一个的值覆盖的情况了。
2.再看下‘+'号合并数组的情况:
$a = array('color'=>'red',5,6); $b = array('color'=>'blue','type'=>'fruit',6,7); $arr = $a+$b; var_dump($arr);
输出结果:
array (size=4) 'color' => string 'red' (length=3) 0 => int 5 1 => int 6 'type' => string 'fruit' (length=5)
从这个结果可以看出,使用‘+'号合并数组,是前面覆盖后面的,和array_merge()
相反,而且它比array_merge()
array_merge_recursive()
があることがわかりました。私の記憶によると、質問を書き出して見てみましょう:
rrreee
要件は array_merge()
を使用しないことです。この状況でも同じ効果が得られます。
array_merge()
配列を結合すると、同じキー値が上書きされます。前の配列内の関連付けられたフォーム配列を、インデックス フォームがキー値の順序でマージします。)
1. まず、array_merge_recursive() 関数を使用してマージします。 p class="jb51code">rrreee
🎜🎜出力結果: 🎜🎜rrreee🎜🎜🎜 結果から、array_merge_recursive()
関数が同じキー値を持つ値を新しい連想配列の形式で返し、このキー値を 2 次元配列のキー値として使用します。他のインデックス形式には影響しません。 🎜🎜🎜 array_merge()
と比較すると、後続の配列キーが前のものと同じで、前の値が上書きされるという状況は発生しません。 🎜🎜🎜🎜2. 「+」記号を使用して配列を結合する状況を見てみましょう: 🎜🎜🎜
🎜rrreee🎜🎜🎜 出力結果: 🎜
🎜 rrreee🎜🎜 🎜この結果からわかるように、「+」記号を使用して配列を結合するのは前後をカバーするものであり、array_merge()
とは逆であり、array_merge() 、配列の内容がインデックス形式で表示される場合、マージ後にキーの値が同じ場合、それらも上書きされます。 🎜🎜関連する推奨事項: 🎜🎜🎜🎜PHP 2 つの 1 次元配列を結合する🎜🎜🎜🎜php 配列関数を結合する array_merge()🎜🎜🎜🎜🎜🎜🎜🎜
以上がPHP で配列をマージする 2 つの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。