Search code examples
phparraysarray-merge

I want to merge two dimensional arrays


Let me describe you the scenario I have got two arrays one with second column as 0 and another array with second column with some value,

first array

Array

(

[0] => Array
    (
        [time_frame] => 2017-05-19
        [email_data] => 0
    )

[1] => Array
    (
        [time_frame] => 2017-05-20
        [email_data] => 0
    )

[2] => Array
    (
        [time_frame] => 2017-05-21
        [email_data] => 0
    )

[3] => Array
    (
        [time_frame] => 2017-05-22
        [email_data] => 0
    )

[4] => Array
    (
        [time_frame] => 2017-05-23
        [email_data] => 0
    )

[5] => Array
    (
        [time_frame] => 2017-05-24
        [email_data] => 0
    )

[6] => Array
    (
        [time_frame] => 2017-05-25
        [email_data] => 0
    )

second array

Array

(

[0] => Array
    (
        [time_frame] => 2017-05-20
        [email_data] => 1
    )

[1] => Array
    (
        [time_frame] => 2017-05-21
        [email_data] => 2
    )

[2] => Array
    (
        [time_frame] => 2017-05-24
        [email_data] => 8
    )

)

Now what I want to achieve is the data below:

[
{
    "time_frame": "2017-05-19",
    "email_data": "0"
},
{
    "time_frame": "2017-05-20",
    "email_data": "1"
},
{
    "time_frame": "2017-05-21",
    "email_data": "2"
},
{
    "time_frame": "2017-05-22",
    "email_data": "0"
},
{
    "time_frame": "2017-05-23",
    "email_data": "0"
},
{
    "time_frame": "2017-05-24",
    "email_data": "8"
},
{
    "time_frame": "2017-05-25",
    "email_data": "0"
}

]

Thanks in advance.


Solution

  • Check out this piece of code...

    $data1 = array(
            array('time_frame'=>'2017-05-19', 'email_data'=>0),
            array('time_frame'=>'2017-05-20', 'email_data'=>0),
            array('time_frame'=>'2017-05-21', 'email_data'=>0),
            array('time_frame'=>'2017-05-22', 'email_data'=>0),
            array('time_frame'=>'2017-05-23', 'email_data'=>0),
            array('time_frame'=>'2017-05-24', 'email_data'=>0),
            array('time_frame'=>'2017-05-25', 'email_data'=>0)
        );
    
    
    $data2 = array(
            array('time_frame'=>'2017-05-20', 'email_data'=>1),
            array('time_frame'=>'2017-05-21', 'email_data'=>2),
            array('time_frame'=>'2017-05-24', 'email_data'=>8)
        );
    
    
    foreach ($data2 as $key2 => $value2)
    {
        foreach ($data1 as $key1 => $value1)
        {
            if($value2['time_frame'] == $value1['time_frame']) {
                $data1[$key1] = $value2;
            }
        }
    }
    
    echo '<pre>';
    print_r($data1);
    echo '</pre>';