note 34301 deleted from function.array-merge by sniper
| From: | sniper@php.net | Date: | Mon, 06 Oct 2003 22:54:30 +0000 |
| Subject: | note 34301 deleted from function.array-merge by sniper | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-57913@lists.php.net to get a copy of this message | ||
Note Submitter: pulstar@mail.com
----
The script bellow will help you to better understand the behavior of some PHP array merging methods:
<?php
function show($arr) {
foreach($arr as $akey=>$avalue) {
echo $akey,"=",$avalue," ";
}
}
$array1=array();
$array1['key1']="keep_me";
$array1['key2']="old_string";
$array1['key3']=1;
$array1[1]="value1";
$array1[2]="value2";
echo "<li><b>\$array1:</b> ",show($array1);
$array2=array();
$array2['key2']="new_string";
$array2['key3']=0;
$array2[1]="new_value1";
echo "<li><b>\$array2:</b> ",show($array2);
echo "<hr>";
$merged1 = $array1 + $array2;
echo "<li><b>\$array1 + \$array2:</b> ",show($merged1);
$merged2 = $array2 + $array1;
echo "<li><b>\$array2 + \$array1:</b> ",show($merged2);
echo "<li><b>array_merge(\$array1,\$array2):</b>
",show(array_merge($array1,array2));
echo "<li><b>array_merge(\$array2,\$array1):</b>
",show(array_merge($array2,array1));
echo "<li><b>array_merge_recursive(\$array1,\$array2):</b>
",show(array_merge_recursive($array1,array2));
echo "<li><b>array_merge_recursive(\$array2,\$array1):</b>
",show(array_merge_recursive($array2,array1));
?>
It will produce the following result:
$array1: key1=keep_me key2=old_string key3=1 1=value1 2=value2
$array2: key2=new_string key3=0 1=new_value1
---------------------------------------------------
$array1 + $array2: key1=keep_me key2=old_string key3=1 1=value1 2=value2
$array2 + $array1: key2=new_string key3=0 1=new_value1 key1=keep_me 2=value2
array_merge($array1,$array2): key1=keep_me key2=old_string key3=1 0=value1 1=value2
2=array2
array_merge($array2,$array1): key2=new_string key3=0 0=new_value1 1=array1
array_merge_recursive($array1,$array2): key1=keep_me key2=old_string key3=1 0=value1
1=value2 2=array2
array_merge_recursive($array2,$array1): key2=new_string key3=0 0=new_value1 1=array1
If you want to replace all common keys with the new values from $array2 (including numeric keys),
the method "$array2 + $array1" is the best choice.
Regards,
Edemilson Lima