Php 匹配两个数组以从第二个数组中获取值
我有两个数组Php 匹配两个数组以从第二个数组中获取值,php,arrays,Php,Arrays,我有两个数组 $queue\u id和$subscriber\u results $queue\u id输出: Array ( [0] => 3 [1] => 4 [2] => 5 ) $subscriber\u结果输出: Array ( [0] => Array ( [id] => 3 [email] => test1@test.com [subscribed] => 1436264818 ) [1] => Array ( [id] =>
$queue\u id
和$subscriber\u results
$queue\u id
输出:
Array ( [0] => 3 [1] => 4 [2] => 5 )
$subscriber\u结果
输出:
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 ) )
我需要匹配这两个数组,以便从$subscriber\u results
数组中获取$queue\u id
数组中那些键的电子邮件记录
我尝试使用array_keys(),但无法使其正常工作
有人能告诉我怎么做吗?你可以用它来提取一个数组,其中id是数组索引(key),email是值。然后添加到队列ID列表,使值成为索引(键)
您可以使用in_数组进行此操作。尝试使用上面的代码
<?php
$matched=array();
foreach($subscriber_results as $key=>$val)
{
if(in_array($val['id'],$queue_ids))
{
$matched[]=$val['email'];
}
}
print_r($matched);
?>
您可以使用array\u walk
和作为
$result = array();
array_walk($subscriber_results,function($v,$k)use(&$result,$queue_ids){
if(in_array($v['id'],$queue_ids)){
$result[] = $v['email'];
}
});
首先通过数组过滤器()从$queue\u id
获取$subscriber\u结果中的所有匹配记录
然后,使用array\u column()
现在,$matches
将在$queue\u id
你也可以用棍棒打它们
$matches = array_column(array_filter($subscriber_results, function($v) use ($queue_ids){
return in_array($v['id'], $queue_ids);
}), 'email');
谢谢,但我没有使用PHP5。
$matches = array_filter($subscriber_results, function($v) use ($queue_ids){
return in_array($v['id'], $queue_ids);
});
$matches = array_column($matches, 'email');
$matches = array_column(array_filter($subscriber_results, function($v) use ($queue_ids){
return in_array($v['id'], $queue_ids);
}), 'email');