PHP array is very different from Java, although PHP's weak type design may be used by many Java and C programs Members criticized it, but I think PHP has gone further than Java and C in the design of array containers.
In addition to incomplete problems in Java's container design, it allows the existence of C-like arrays, which is the only place in the Java language itself that does not satisfy the requirement that everything is an object.
In fact, the existence of containers itself will reduce a certain amount of efficiency. But if efficiency is overemphasized, why not just use machine code? So I don't really like those who take PHP container design too far.
As we all know, PHP’s array itself is a map.
For a normal array, its internal structure is actually:
$arr1=array(1,2,3,4,5); print_r($arr1,1); Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
For what we usually understand as map, PHP internally implements it like this:
<span>$arr2</span>=<span>array</span>('c'=>1,'y'=>2,'m'=>3<span>); </span><span>print_r</span>(<span>$arr2</span>,1<span>); </span><span>Array</span><span> ( [c] </span>=> 1<span> [y] </span>=> 2<span> [m] </span>=> 3<span> )</span>
For array merging, you can think of PHP using an overload function similar to C, overloading the plus sign:
<span>print_r</span>(<span>$arr1</span>+<span>$arr2</span>,1<span>); </span><span>Array</span><span> ( [</span>0] => 1<span> [</span>1] => 2<span> [</span>2] => 3<span> [</span>3] => 4<span> [</span>4] => 5<span> [c] </span>=> 1<span> [y] </span>=> 2<span> [m] </span>=> 3<span> )</span>
This kind of array merging is very convenient for you to traverse this array from the beginning, because in many cases you will not use the array in a random access manner, but traverse from the beginning to the end.
However, an issue you tend to overlook here is that array is essentially a map. If two arrays have the same key, it is easily ignored by you:
<span>$arr1</span>=<span>array</span>(1,2,3,4,5<span>); </span><span>$arr2</span>=<span>array</span>(7,8,9<span>); </span><span>$arr3</span>=<span>array</span>('1'=>'c','2'=>'y','3'=>'m','4'=>'z','5'=>'a'<span>); <br /><br /></span><span>print_r</span>(<span>$arr1</span>+<span>$arr2</span>,1<span>);<br /> </span><span>print_r</span>(<span>$arr1</span>+<span>$arr3</span>,1<span>); <br /><br /></span><span>Array</span><span> ( <br /> [</span>0] => 1<span> <br /> [</span>1] => 2<span> <br /> [</span>2] => 3<span> <br /> [</span>3] => 4<span> <br /> [</span>4] => 5
<em id="__mceDel"><span>) </span><span>Array</span><span> ( [</span>0] => 1<span> [</span>1] => 2<span> [</span>2] => 3<span> [</span>3] => 4<span> [</span>4] => 5<br /> [5] => a</em>
<span>)</span>
The purpose of my second example is to tell you that by default, the keys of php are 0,1,2,3.
When merging arrays, for existing keys, the additional values will not overwrite the original values.
It seems that only the last sentence has greater value. When I write a blog, I just talk a lot of nonsense.