I have two or more array with the same key, I want to merge these arrays but keep the value. Exp:
$arr1 = array("message" => "message 1");
$arr2 = array("message" => "message 2");
echo "<pre>";
print_r($arr3 = somefunction($arr2,$arr1));
echo "</pre>";
I want result like this:
Array
(
[message] => Array
(
[0] => message 1
[1] => message 2
)
)
array_merge_recursive()
: merges the elements of one or more arrays together so that the values of one are appended to the end of the previous one. It returns the resulting array.
Example :
<?php
$arr1 = array("message" => "message 1");
$arr2 = array("message" => "message 2");
echo "<pre>";
print_r($arr3 = array_merge_recursive($arr2,$arr1));
echo "</pre>";
?>
Output :
Array
(
[message] => Array
(
[0] => message 2
[1] => message 1
)
)
more info : http://php.net/manual/en/function.array-merge-recursive.php
If you just want the values and no keys use array_values
then array_merge
$masterArray = new Array();
foreach( $arr in $arrs ) {
array_merge( $masterArray, array_values( $arr ) );
}
if you have an odd number of keys in one array you may want to insure all sub items are arrays
$arrays = array(
array("message" => "message 1", "other"=>'message 3'),
array("message" => "message 2")
);
$merged = array();
foreach($arrays as $array){
foreach ($array as $key => $item){
$merged[$key][] = $item;
}
}
echo '<pre>';
print_r($merged);
Output:
Array
(
[message] => Array
(
[0] => message 1
[1] => message 2
)
[other] => Array
(
[0] => message 3
)
)
Array merge output
Array
(
[message] => Array
(
[0] => message 2
[1] => message 1
)
[other] => message 3
)