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條經驗 獲得超4個贊
只是想添加一個替代答案。盡管這些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 關注
- 139 瀏覽
添加回答
舉報