Merge Arrays

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
NetSpike
Forum Newbie
Posts: 3
Joined: Sat Nov 01, 2008 3:20 am

Merge Arrays

Post by NetSpike »

Hi

It would be great if someone could please help me with this problem:

I have 2 arrays that looks like this:

Code: Select all

$original_array (
        ["Key1"]
            ["Element1"] => "Edward",
            ["Element2"] => "Graham"
        ["Key2"]
            ["Element3"] => "Douglas",
            ["Element4"] => "Jeff"
        )
 
$new_array  (
        ["Key1"]
            ["Element1"] => "New Edward",
            ["Element2"] => "Graham"
        ["Key2"]
            ["Element4"] => "New Jeff",
            ["Element5"] => "Gudon"
        ["Key3"]
            ["Element6"] => "Chris",
            ["Element7"] => "Andrew"
        )
 
The output of these two merged arrays should be:

Code: Select all

 
$merged_array   (
        ["Key1"]
            ["Element1"] => "New Edward",
            ["Element2"] => "Graham"
        ["Key2"]
            ["Element3"] => "Douglas",
            ["Element4"] => "New Jeff",
            ["Element5"] => "Gudon"
        ["Key3"]
            ["Element6"] => "Chris",
            ["Element7"] => "Andrew"
        )

Question: How can I merge $original_array and $new_array to output $merged_array?

I am using PHP 4.

Any help would be appreciated.

Thanks in advance!
User avatar
requinix
Spammer :|
Posts: 6617
Joined: Wed Oct 15, 2008 2:35 am
Location: WA, USA

Re: Merge Arrays

Post by requinix »

And what have you tried so far?

There's a really really simple answer so I'm kinda surprised that you haven't figured it out.
The slightly-more-complicated answer is a function, appropriately named because it merges arrays.
User avatar
omniuni
Forum Regular
Posts: 738
Joined: Tue Jul 15, 2008 10:50 pm
Location: Carolina, USA

Re: Merge Arrays

Post by omniuni »

Hee. Hee.

It really is simple.

:D

http://us2.php.net/array_merge

Good Luck!
NetSpike
Forum Newbie
Posts: 3
Joined: Sat Nov 01, 2008 3:20 am

Re: Merge Arrays

Post by NetSpike »

array_merge() is not working correctly.

My code is:

Code: Select all

<?php
 
$original_array["Key1"]["Element1"] = "Edward";
$original_array["Key1"]["Element2"] = "Graham";
$original_array["Key2"]["Element3"] = "Douglas";
$original_array["Key2"]["Element4"] = "Jeff";
 
 
$new_array["Key1"]["Element1"] = "New Edward";
$new_array["Key1"]["Element2"] = "Graham";
$new_array["Key2"]["Element4"] = "New Jeff";
$new_array["Key2"]["Element5"] = "Gudon";
$new_array["Key3"]["Element6"] = "Chris";
$new_array["Key3"]["Element7"] = "Andrew";
 
 
$merged_array = array_merge($original_array, $new_array);
 
echo "<pre>";
print_r($merged_array);
echo "</pre>";
 
?>
 

But the output is:

Code: Select all

Array
(
    [Key1] => Array
        (
            [Element1] => New Edward
            [Element2] => Graham
        )
 
    [Key2] => Array
        (
            [Element4] => New Jeff
            [Element5] => Gudon
        )
 
    [Key3] => Array
        (
            [Element6] => Chris
            [Element7] => Andrew
        )
 
)
 
Note that ["Key2"]["Element3"] = "Douglas" is missing.
User avatar
Ziq
Forum Contributor
Posts: 194
Joined: Mon Aug 25, 2008 12:43 am
Location: Russia, Voronezh

Re: Merge Arrays

Post by Ziq »

This is really simple. For example

Code: Select all

 
<?
//...
/**
 *  First a method
 */
echo 'First a method<br>';
$merged_array = $original_array;
foreach ($new_array as $k=>$v)
{
    foreach ($v as $k2=>$v2)
    {
        $merged_array[$k][$k2] = $new_array[$k][$k2];
    }   
}
 
 
echo "<pre>";
print_r($merged_array);
echo "</pre>";
 
 
/**
 *  Second a method
 */
echo 'Second a method<br>';
$merged_array = $original_array;
foreach ($new_array as $k=>$v)
{
    if (isset($merged_array[$k]))
    {
        $merged_array[$k] = array_merge($merged_array[$k], $v);
    }
    else
    {
        $merged_array[$k] = $v;
    }
}

echo "<pre>";
print_r($merged_array);
echo "</pre>";
//...
?>
 
Pay attention how array_merge() works.
NetSpike
Forum Newbie
Posts: 3
Joined: Sat Nov 01, 2008 3:20 am

Re: Merge Arrays

Post by NetSpike »

Awesome!

Thanks for all the help!

You guys are great!
Post Reply