Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:从字典列表中按键获取值列表_Php_Arrays - Fatal编程技术网

PHP:从字典列表中按键获取值列表

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

要获取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 (
      [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
)