Search code examples
phparray-merge

PHP array merge


I have two arrays as follows:

Array I:

Array
(
    [0] => Array
        (
            [did] => 1
            [dname] => AJAy
            [dsp] => 3
            [dqu] => abc
            [isactive] => Y
        )
    [1] => Array
        (
            [did] => 2
            [dname] => Vijay
            [dsp] => 4
            [dqu] => abc
            [isactive] => Y
        )
)

Array II:

Array
(
    [0] => Array
        (
            [recno] => 1
            [dname] => AJAy
            [dsp] =>
            [did]=>
            [dqu] => 
            [isactive] => Y
        )
    [1] => Array
        (
            [recno] => 2
            [dname] => Vijay
            [dsp] =>
            [did]=>
            [dqu] => 
            [isactive] => Y
        )
)

I want to update values of did, dsp, dqu from array I to array II based on match value of dname , I tried with array merge its not work out for my situation, please help me


Solution

  • How about:

    $arr1 = Array(
        Array(
            'did'       => 1,
            'dname'     => 'AJAy',
            'dsp'       => 3,
            'dqu'       => 'abc',
            'isactive'  => 'Y',
        ),
        Array(
            'did'       => 2,
            'dname'     => 'Vijay',
            'dsp'       => 4,
            'dqu'       => 'abc',
            'isactive'  => 'Y',
        ),
    );
    $arr2 = Array(
        Array(
            'recno'     => 2,
            'dname'     => 'Vijay',
            'dsp'       => '',
            'did'       => '',
            'dqu'       => '',
            'isactive'  => 'Y',
        ),
        Array(
            'recno'     => 1,
            'dname'     => 'AJAy',
            'dsp'       => '',
            'did'       => '',
            'dqu'       => '',
            'isactive'  => 'Y',
        ),
    );
    
    for($i1=0; $i1<count($arr1); $i1++) {
        for ($i2=0; $i2<count($arr2); $i2++) {
            if ($arr1[$i1]['dname'] == $arr2[$i2]['dname']) {
                $arr2[$i2]['did'] = $arr1[$i1]['did'];
                $arr2[$i2]['dsp'] = $arr1[$i1]['dsp'];
                $arr2[$i2]['dqu'] = $arr1[$i1]['dqu'];
            }
        }
    }
    print_r($arr2);
    

    output:

    Array
    (
        [0] => Array
            (
                [recno] => 2
                [dname] => Vijay
                [dsp] => 4
                [did] => 2
                [dqu] => abc
                [isactive] => Y
            )
    
        [1] => Array
            (
                [recno] => 1
                [dname] => AJAy
                [dsp] => 3
                [did] => 1
                [dqu] => abc
                [isactive] => Y
            )
    
    )