我有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 )
);
答案 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);