如何在 JSON 中使用特定项目的名称从该项目接收其他数据



例如,我有这个JSON文件:

[{"name":"Name1",
"value":24,
"min":10,
"max":16,
"rate":108},
{"name":"Name2",
"value":69,
"min":0,
"max":6,
"rate":122}
]

我已经使用以下命令将其解码为一个数组:

$json = json_decode($jsondata, true);

现在我想通过使用其名称来获取第 2 项的值,例如:

echo $json['Name1']['value'] 

而不是

echo $json[0]['value'] 

有什么办法可以做到这一点吗?谢谢。

你可以做这样的事情:

1 -你创建一个函数,该函数将遍历数组并根据名称返回值

function echoValueByName(array $array, $name) {
foreach($array as $data) {
if ($data['name'] == $name) {
return $data['value'];
}
}
return 'Unknow name : '.$name;
}

2 -现在使用它按名称回显值:

echo echoValueByName($json, 'Name1'); // return 24
echo echoValueByName($json, 'test');  // return Unknow name : test

你可以这样尝试,

<?php
$str = '[{"name":"Name1",
"value":24,
"min":10,
"max":16,
"rate":108},
{"name":"Name2",
"value":69,
"min":0,
"max":6,
"rate":122}
]';
$arr = json_decode($str,true);
$result = $arr[array_search('Name2',array_column($arr,"name"))];
echo "<pre>";
print_r($result);

这是工作代码。

array_search - 在数组中搜索给定值,如果成功
,则返回第一个对应的键 array_column - 返回输入数组中单个列的值