我有一个问题。所以我有这个数组:
$a_list_id = array(
0 => 1234
1 => 739
3 => 538
);
这个数组:
$a_users = array(
0 => array(
id => 15627,
name => test
),
1 => array(
id => 1234,
name => test1
),
2 => array(
id => 739,
name => test2
)
)
结果应为:
$a_response = array(
0 => array(
id => 1234,
name => test1
)
)
因为id 1234
在两个数组中。
我尝试使用array_intersect但不能正常工作。你能帮帮我吗?
答案 0 :(得分:1)
只需使用循环:
$a_response = array();
foreach ($a_users as $array) {
if (in_array($array['id'], $a_list_id)) {
$a_response []= $a_users;
}
}
答案 1 :(得分:1)
如果两个数组的值都可以转换为相同的类型,则array_intersect只会产生有用的结果。你有一个整数数组和另一个数组数组,它们永远不会匹配,所以相交总是空的
如果您想要阵列之间的交叉点,那么您有两个选择:
前者的例子:
$a_list_id = array(
1234 => 1234
739 => 739
538 => 538
);
$a_users = array(
15627 => array(
id => 15627,
name => test
),
1234 => array(
id => 1234,
name => test1
),
739 => array(
id => 739,
name => test2
)
)
var_dump (array_intersect_key ($a_users, $a_list_id));
后者的例子:
var_dump (array_uintersect ($a_users, $a_list_id, function ($user, $id) {
return $user ["id"] - $id; // Result should be 0 if they match, as per documentation
}))
*在一个值为整数0而另一个为空数组的情况下,它们可以被认为是相同的,但这不是很有用
答案 2 :(得分:0)
您是否尝试过使用array_intersect_uassoc
? http://php.net/manual/en/function.array-intersect-uassoc.php
function compare_ids($a, $b)
{
return $a - $b['id'];
}
print_r(array_intersect_uassoc($a_list_id, $a_users, "compare_ids"));
答案 3 :(得分:0)
使用array_search()函数尝试以下代码:
$a_list_id = array(1234, 538,739);
$a_users = array(
array(
'id'=> 15627,
'name' => 'test'
),
array(
'id' => 1234,
'name' => 'test1'
),
array(
'id' => 739,
'name' => 'test2'
)
);
foreach($a_users as $a_user){
if (in_array($a_user['id'], $a_list_id)) {
$a_response[array_search($a_user['id'], $a_list_id)] = $a_user;
}
}
print_r($a_response);