我有两个阵列。
$queue_ids
和$subscriber_results
。
$queue_ids
输出:
Array ( [0] => 3 [1] => 4 [2] => 5 )
$subscriber_results
输出:
Array ( [0] => Array ( [id] => 3 [email] => test1@test.com [subscribed] => 1436264818 ) [1] => Array ( [id] => 4 [email] => test2@test.com [subscribed] => 1436265909 ) [2] => Array ( [id] => 5 [email] => test3@test.com [subscribed] => 1436265919 ) )
我需要匹配这两个数组,以便从email
数组中获取$queue_ids
数组中这些键的$subscriber_results
记录。
我尝试使用array_keys()但无法使其工作。
有人能告诉我如何做到这一点吗?
答案 0 :(得分:2)
您可以使用array_column提取数组,其中id是数组索引(键),电子邮件是值。然后compare it到队列ID列表flipped,因此值是索引(键)。
$matchingEmails = array_intersect_key(array_column($subscriber_results, "email", "id"), array_flip($queue_ids));
答案 1 :(得分:1)
你可以使用in_array。尝试使用上面的代码
<?php
$matched=array();
foreach($subscriber_results as $key=>$val)
{
if(in_array($val['id'],$queue_ids))
{
$matched[]=$val['email'];
}
}
print_r($matched);
?>
答案 2 :(得分:0)
您可以将array_walk
与in_array
一起用作
$result = array();
array_walk($subscriber_results,function($v,$k)use(&$result,$queue_ids){
if(in_array($v['id'],$queue_ids)){
$result[] = $v['email'];
}
});
答案 3 :(得分:0)
首先通过$subscriber_results
$queue_ids
获取array_filter()
中的所有匹配记录
$matches = array_filter($subscriber_results, function($v) use ($queue_ids){
return in_array($v['id'], $queue_ids);
});
然后,使用email
array_column()
的列
$matches = array_column($matches, 'email');
现在,$matches
将包含id
中$queue_ids
的电子邮件
与他们联系
$matches = array_column(array_filter($subscriber_results, function($v) use ($queue_ids){
return in_array($v['id'], $queue_ids);
}), 'email');