我有2个数组-
$array1 =
Array
(
[0] => Array
(
[user_id] => 2
[like_status] => 1
)
[1] => Array
(
[user_id] => 3
[like_status] => 1
)
)
$array2 =
Array
(
[isLoggedIn] => 1
[userId] => 3
)
我的要求是我要获取userId = 3的数组。$array1
中可以有多个记录,但是我只想获取userID = 3的数组,该数组位于$ array2
我可以进入条件并进行匹配,但无法获取。
if(array_search($array2['userId'], array_column($array1, 'user_id')) !== False) {
print_r($array1);
}
但是它应该只返回特定的数组。
答案 0 :(得分:3)
一种方法是创建用户标识的平面数组,并使用array_intersect获取匹配的完整数组。
$userids = array_column($array1, "user_id");
$matching = array_intersect_key($array1, array_intersect($userids, [$array2['user_id']]));
现在$ matching将是用户ID与$array1
匹配的所有$array2['userId']
子数组。
答案 1 :(得分:3)
array_search($array2['userId'], array_column($array1, 'user_id'))
将返回匹配项的索引;如果没有匹配项,则返回false
。您可以使用此信息从$array1
获取数组。
即
$index = array_search($array2['userId'], array_column($array1, 'user_id')) !== False);
if($index !== false){
print_r($array1[$index]);
}
请注意,这是假设数组中只有一个匹配的用户ID-如果有更多的用户ID,则只会找到第一个。
答案 2 :(得分:1)
如果您想在下方喜欢,也可以使用 foreach 进行操作
foreach ($array1 as $key => $value) {
if($value['user_id'] == $array2['userId'])
{
echo '<pre>'; print_r($value);echo '</pre>';
break;
}
}
输出:
数组( [user_id] => 3 [like_status] => 1)
答案 3 :(得分:0)
您可以使用foreach循环实现
foreach( $array1 as $val ){
$val['user_id'] == $array2['userId'] ? $result[] = $val : '';
}
echo "<pre>"; print_r( $result );