Php 如何从多维数组中提取相应的数组值
如何从下面给出的数组中获取所有ID的列表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
$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数据。我不明白你的问题是什么。你有没有试过这个密码,除了这个密码什么都没有?似乎您在使用之前正在更改代码。