Search code examples
phparray-merge

Merge 2 different array and form a single array in php


I need to merge two different arrays and form a single array. The key field has the same value in both arrays.

$array1=Array ( 
[0] => Array ( [key] => 39 [url] => www.youtube.com/embed/23sdg234 ) 
[1] => Array ( [key] => 39 [url] => player.vimeo.com/video/s3423sfsdf ) 
[2] => Array ( [key] => 39 [url] => www.youtube.com/embed/wersd2323 )
[3] => Array ( [key] => 40 [url] => www.youtube.com/embed/3423sfsd )
[4] => Array ( [key] => 40 [url] => www.youtube.com/embed/asd23423 )
) 

The array1 needs to get values [firstName],[lastName] from array2 based on key=key1

$array2=Array ( 
[0] => Array ( [key1] => 39 [firstName] => xyz [lastName] => s )
[1] => Array ( [key1] => 40 [firstName] => abc [lastName] => e )
) 

The result should be formed as below array.

$result=Array ( 
[0] => Array ( [key] => 39  [firstName] => xyz [lastName] => s [url] => www.youtube.com/embed/23sdg234 ) 
[1] => Array ( [key] => 39  [firstName] => xyz [lastName] => s [url] => player.vimeo.com/video/s3423sfsdf ) 
[2] => Array ( [key] => 39  [firstName] => xyz [lastName] => s [url] => www.youtube.com/embed/wersd2323 )
[3] => Array ( [key] => 40  [firstName] => abc [lastName] => e [url] => www.youtube.com/embed/3423sfsd )
[4] => Array ( [key] => 40  [firstName] => abc [lastName] => e [url] => www.youtube.com/embed/asd23423 )
) 

thank you so much in advance.


Solution

  • $array1=Array ( 
    0 => Array ( 'key' => 39, 'url' => "www.youtube.com/embed/23sdg234" ),
    1 => Array ( 'key' => 39, 'url' => "player.vimeo.com/video/s3423sfsdf" ), 
    2 => Array ( 'key' => 39, 'url' => "www.youtube.com/embed/wersd2323" ),
    3 => Array ( 'key' => 40, 'url' => "www.youtube.com/embed/3423sfsd" ),
    4 => Array ( 'key' => 40, 'url' => "www.youtube.com/embed/asd23423" ),
    );
    $array2=Array ( 
    0 => Array ( 'key1' => 39, 'firstName' => 'xyz', 'lastName' => 's' ),
    1 => Array ( 'key1' => 40, 'firstName' => 'abc', 'lastName' => 'e' ),
    );
    $result=array();
    
    foreach($array1 as $da){
        $fName='';
        $lName='';
        foreach($array2 as $da2){
            if($da['key']==$da2['key1']){
                $fName=$da2['firstName'];
                $lName=$da2['lastName'];
                break;
            }
        }
        $result[]=array(
            'key'=>$da['key'],
            'firstName'=>$fName,
            'lastName'=>$lName,
            'url'=>$da['url'],
        );
    }
    print_r($result);