Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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_Multidimensional Array - Fatal编程技术网

Php 如何从多维数组中提取相应的数组值

Php 如何从多维数组中提取相应的数组值,php,multidimensional-array,Php,Multidimensional Array,如何从下面给出的数组中获取所有ID的列表 $filteredZips=[{ "id": 21, "distance": "0" }, { "id": 20, "distance": "3.9399923305414037" }, { "id": 29, "distance": "8.33045537474091" }] 预期结果将是: $id = array('21','20','29'); 解决方案: $answer = []; forea

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

$filteredZips=[{
    "id": 21,
    "distance": "0"
},
{
    "id": 20,
    "distance": "3.9399923305414037"
},
{
    "id": 29,
    "distance": "8.33045537474091"
}] 
预期结果将是:

$id = array('21','20','29');
解决方案:

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

使用
array\u map
功能:

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

文档:

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

$filteredZips = json_decode($filteredZips);

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

print_r($results);
检查此处:

尝试以下操作:

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

不要忘记使用json_decode函数来获取正确的php数组。

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

然后array_列返回预期的输出

不需要循环

$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);

如果您不需要
$filteredZipsarr
,可以将其设置为一行:

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

使用
JSON\u解码转换JSON后,使用
array\u column

$ids = array_column(json_decode($filteredZips, true), 'id');

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

代码不会从jsonstring返回数组。这是一个对象。@Andreas我已经更新了答案,
json\u decode
将返回对象数组。我必须说这不是数组,而是json数据。你能不能在没有pj的情况下共享你的代码,该变量是可变的谢谢@Andreas,但为什么它返回null并且有一个错误“array\u column()期望参数1是数组,object given”@如果你没有使用我的密码。我的代码是Json_decode($filteredZips,true);true表示返回为数组。如果你说参数1是一个对象,你就不能在jsondecode中将参数2设置为true。@Andreas我已经对数组变量($filteredZips)做了pj而不是pr,那么在这种情况下,你认为我应该使用json_decode吗?@Andreas它是一个jsondata@lopamudra你在说什么?什么是“pj”和“pr”?是的,这是json数据,这就是为什么代码有行
$filteredZipsarr=json_decode($filteredZips,true)解码json数据。我不明白你的问题是什么。你有没有试过这个密码,除了这个密码什么都没有?似乎您在使用之前正在更改代码。