PHP:从字典列表中按键获取值列表
要获取id,通过传入PHP:从字典列表中按键获取值列表,php,arrays,Php,Arrays,要获取id,通过传入user\u id=15,我需要 Array ( [0] => Array ( [id] => 1 [user_id] => 15 [booked] => 2020-08-01 [sendin] => 2020-08-03 [pickup] => 2020-08-08 [duration] => 5 ) [1] => Array
user\u id=15
,我需要
Array (
[0] => Array (
[id] => 1
[user_id] => 15
[booked] => 2020-08-01
[sendin] => 2020-08-03
[pickup] => 2020-08-08
[duration] => 5
)
[1] => Array (
[id] => 2
[user_id] => 15
[booked] => 2020-08-01
[sendin] => 2020-08-03
[pickup] => 2020-08-08
[duration] => 5
)
)
有没有速记方法,或者我需要编写一个函数?感谢您的帮助。您可以使用查找所有具有用户id==15
的子数组,然后提取相应的id
值:
$ids = array(1, 2)
$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);
或者,您可以使用搜索15的用户id
值(提取者)的键,并使用数组映射中的这些键来检索id
值:
$ids = array(1, 2)
$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\uu
方法很方便,但它们也有缺点。在另一个答案中,第一个方法将处理数组两次(一次用于array\u filter()
,结果用于array\u map()
),第二个方法将处理三次。这似乎很方便,但我的替代方案使用了一个简单的foreach()
循环。它使1通过数组,只检查用户id,如果匹配,则将其添加到列表中
Array
(
[0] => 1
[1] => 2
)
这给了
Array
(
[0] => 1
[1] => 2
)