php - 如何在 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);
现在我想通过使用它的名称来获取第二个项目的值,例如:
echo $json['Name1']['value']
代替
echo $json[0]['value']
有什么办法吗?谢谢。
解决方案
你可以这样试试
<?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 - 从输入数组中的单个列返回值
推荐阅读
- python-3.x - Colabs 文件传输不驱动
- css - 将变量设置为具有相同的属性值
- outlook-web-addins - Outlook插件:按下“操作”时调用“任务窗格”的js代码
- python - 一个使用python的windows窗体应用框架
- ejabberd - ejabberd 20.04 mod_http_upload 不工作
- php - 有没有办法更改添加到现有项目目录的 PHP 项目的文档根目录?
- angular - Cookie 未在 API 调用中发送
- c# - 即使方法调用没有进行 I/O 或类似的事情,每个方法调用是否应该在异步方法中异步?
- javascript - 如何在 IE 浏览器中打开 chrome 中的 url 时禁用 Active x 控制器不安全弹出窗口
- tensorflow - 在 keras 中构建高度定制的神经网络(权重共享、自定义连接)