合并2个不同的数组并在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.

$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);
<?php
foreach($array1 as $vid)
{
    $found = false;
    foreach ($array2 as $user)
        {
            if ($vid['key'] === $user['key1'])
            {
                $found = true;
                break 1;
            }
        }
        if ($found)
        {
            $result[] = array(
                               'key' => $vid['key'] , 
                               'firstname' => $user['firstname'] , 
                               'lastname' => $user['lastname'] , 
                               'url' => $array1['url']
                             );
        }
        else
        {
            $result[] = array(
                               'key' => $vid['key'] , 
                               'firstname' => "Unknown" , 
                               'lastname' => "Unknown" , 
                               'url' => $array1['url']
                             );
        }
}

Havent tested it , but should do the job. Its basically looping thru each item in Array1 . And then for each of the item there it checks if the same key exists in Array2. And then if the key matches it writes all the data to a new array. If no matching key is found then the Name fields are populated with "unknown". This just solves the basic issue, you might want to adapt it to your need.

The naïve way:

foreach ($array1 as &$values) {
    foreach ($array2 as $mixin) {
        if ($mixin['key'] == $values['key']) {
            $values += $mixin;
        }
    }
}

The fancy, more optimised way:

$mixins = array_combine(array_column($array2, 'key'), $array2);
$result = array_map(
    function (array $values) use ($mixins) { return $values += $mixins[$values['key']]; },
    $array1
);

Walk through the first array, and create a combined one:

$combinedArray = [];

array_walk(function($val,$key) use ($array1,$combinedArray){
    if(array_key_exists($key,$array1))
    {
        $combinedArray[$key] = array_merge($val,$array1[$key]);
    }
    else
    {
        $combinedArray[$key] = $val;
    }
},$array);