How can make it so array_merge() overwrites two keys with different values but same key index from two arrays?
for example, merging:
[0] => 'whatever'
with
[0] => 'whatever', [1] => 'a', [2] => 'b'
should produce
[0] => 'whatever', [1] => 'a', [2] => 'b'
Basically I want array_merge to bahave the same way it behaves if the arrays have string keys...
Definition and Usage The array_merge_recursive() function merges one or more arrays into one array. The difference between this function and the array_merge() function is when two or more array elements have the same key. Instead of override the keys, the array_merge_recursive() function makes the value as an array.
The array_merge() function merges one or more arrays into one array. Tip: You can assign one array to the function, or as many as you like. Note: If two or more array elements have the same key, the last one overrides the others.
The array_merge() function accepts one or more arrays and returns a new array that contains the elements from the input arrays.
Use the +
operator.
Compare array_merge
to +
operator:
<?php $a1 = array(0=>"whatever",); $a2 = array(0=>"whatever",1=>"a",2=>"b"); print_r(array_merge($a1,$a2)); print_r($a1+$a2); ?>
Output:
Array ( [0] => whatever [1] => whatever [2] => a [3] => b ) Array ( [0] => whatever [1] => a [2] => b )
The +
operator still works if your associative array has the numerical keys out-of-order:
<?php $a1 = array(0=>"whatever",); $a2 = array(1=>"a",0=>"whatever",2=>"b"); print_r(array_merge($a1,$a2)); print_r($a1+$a2); ?>
Output:
Array ( [0] => whatever [1] => a [2] => whatever [3] => b ) Array ( [0] => whatever [1] => a [2] => b )
Notice array_merge
in this case creates a new key. Not desirable...
array_replace
does exactly this!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With