从其他2个数组创建新数组

时间:2015-04-13 14:38:52

标签: php

我有2个包含用户详细信息的数组,包括电子邮件地址。我想创建一个新的数组,其中只包含两个数组中出现的电子邮件的用户详细信息。是否有任何功能可以做到这一点?

我尝试使用“array_intersect_assoc”。不好......

$newGroupsArray = array_intersect ($firstArray , $secondArray  );
例如,

,在这个例子中,只有“nathalie”细节应该在新数组中。 有没有这样做的功能?

$firstArray = array( 0 => Array ( 'name' => 'ronen',    'email' => 'ronen$Experts.com' ,    'contactID' => 43 ) ,
                1 => Array ( 'name' => 'shlomig' ,  'email' => 'shlomig$tours.co.il' ,'contactID' => 28 ) ,
                2 => Array ( 'name' => 'nathalie',  'email' => 'nathalie$obra.co.il',   'contactID' => 57 ) 

         );
$secondArray  = array(0 => Array ( 'name' => 'nathalie',    'email' => 'nathalie$obra.co.il',   'contactID' => 57 ) ,
                        1 => Array ('name' => 'roi' ,       'email' => 'roi$mail.com' ,'contactID' => 99 ) 
         );

1 个答案:

答案 0 :(得分:0)

您可以组合array_values和array_intersect_key来获得所需的结果。

$Array1 = array();

$Array2 = array();

foreach ($firstArray as $value) 
{
    $Array1[$value['email']] = $value;
}   

foreach ($secondArray as $value) 
{
    $Array2[$value['email']] = $value;
}   

$matches = array_values(array_intersect_key($Array1, $Array2));

print_r($matches);

您还可以使用foreach循环并使用if条件检查数据,如下所示。

$matches = array();
foreach($firstArray as $key => $value)
{
    foreach($secondArray as $value1)
    {
        if($value['email'] === $value1['email'])
            $matches[] = $value;
    }   
}

print_r($matches);