如何从多维数组中提取特定的数组值

时间:2018-01-25 12:16:18

标签: php multidimensional-array

如何从下面给出的数组中获取所有ID的列表,

$filteredZips=[{
    "id": 21,
    "distance": "0"
},
{
    "id": 20,
    "distance": "3.9399923305414037"
},
{
    "id": 29,
    "distance": "8.33045537474091"
}] 

预期结果将是:

$id = array('21','20','29');

6 个答案:

答案 0 :(得分:1)

有一个名为array_column的函数可以获取数组中的一列 首先,需要将字符串转换为具有Json_decode且第二个参数为true的数组。

然后array_column返回您的预期输出。

不需要循环。

$filteredZips='[{
"id": 21,
"distance": "0"},{
"id": 20,
"distance": "3.9399923305414037"},{
"id": 29,
"distance": "8.33045537474091"}]';

$filteredZipsarr = json_decode($filteredZips,true);

$id = array_column($filteredZipsarr, "id");
Var_dump($id);

https://3v4l.org/hFOKR

如果您不需要$filteredZipsarr,可以将其作为一个班轮:

$id = array_column(json_decode($filteredZips,true), "id");

答案 1 :(得分:0)

使用array_map功能:

$id = array_map(function($value){
   return $value['id'];
}, $filteredZips);

文档:http://php.net/manual/en/function.array-map.php

答案 2 :(得分:0)

首先,您需要解码JSON字符串以将其作为对象数组访问:

$filteredZips = json_decode($filteredZips);

$results = array();
foreach ($filteredZips as $zip) {
    $results[] = $zip->id;
}

print_r($results);

点击此处:https://3v4l.org/kfkhV

答案 3 :(得分:0)

使用array_column

转换JSON后使用json_decode
$ids = array_column(json_decode($filteredZips, true), 'id');

Array
(
    [0] => 21
    [1] => 20
    [2] => 29
)

答案 4 :(得分:-1)

解决方案:

$answer = [];
foreach($filteredZips as $array){
    if(isset($array['id'])){
         $answer[]=$array['id'];
    }
}
var_dump($answer);

答案 5 :(得分:-1)

试试这个:

$ids = array();
foreach ($filteredZips as $zip) {
    $ids[] = $zip["id"];
 }
var_dump($ids);

别忘了使用json_decode函数来获取正确的php数组。