2 回答
TA贡献1864条经验 获得超2个赞
您可以使用array_filter
查找所有具有 的子数组user_id == 15
,然后array_map
提取相应的id
值:
$user_id = 15;
$ids = array_map(function ($a) { return $a['id']; },
array_filter($array,
function ($a) use ($user_id) {
return $a['user_id'] == $user_id;
})
);
print_r($ids);
或者,您可以使用array_keys
搜索user_id
值的键(由 提取array_column
),即 15 并使用这些键来array_map
检索id
值:
$ids = array_map(function ($k) use ($array) { return $array[$k]['id']; }, array_keys(array_column($array, 'user_id'), $user_id) );print_r($ids);
在这两种情况下,输出(对于您的示例数据)为:
Array
(
[0] => 1
[1] => 2
)
TA贡献1780条经验 获得超3个赞
只是想添加一个替代答案。尽管这些array_方法很方便,但它们也有缺点。在另一个答案中,第一个方法将处理数组两次(一次用于array_filter()和 结果array_map()),第二个方法将执行 3 次。这看起来很方便,但我的替代方案使用一个简单的foreach()循环。它使 1 次遍历数组并仅检查 user_id 并将其添加到列表中(如果匹配)...
$ids = [];
foreach ( $array as $user ) {
if ( $user['user_id'] == $user_id ) {
$ids[] = $user['id'];
}
}
print_r($ids);
这使...
Array
(
[0] => 1
[1] => 2
)
- 2 回答
- 0 关注
- 92 浏览
添加回答
举报