php - 从php中没有索引的json文件获取数据
问题描述
我有一个这样的 JSON 文件
[
{
"item_id": "342",
"item_title": "James"
},
{
"item_id": "374",
"item_title": "Fred"
}
]
我想在 PHP 中获取 item_title,但使用 item_id。
我该怎么办?
我有
$item_id = 374;
$url = 'file.json';
$data = file_get_contents($url);
$items = json_decode($data);
谢谢你。
解决方案
如果您知道该键将始终存在,则可以使用array_search()和array_column()
echo $items[array_search($item_id,array_column($items,'item_id'))]['item_title'];
否则,请使用功能方法
$items = json_decode($data,true);
function getItemTitle($array,$item_id){
$key = array_search($item_id,array_column($array,'item_id'));
if($key !==false && isset($array[$key]['item_title'])){
return $array[$key]['item_title'];
}else{
return "no title found for given id ".$item_id;
}
}
echo getItemTitle($items,$item_id);
如果相同的 id 可以重复多次
$items = json_decode($json,true);
foreach($items as $value){
if($value['item_id']==$item_id){
echo $value['item_title'].PHP_EOL;
}
}
推荐阅读
- html - 为什么这个导航栏会出现这个样子?
- python-3.x - 如何在scrapy中将allowed_domains与start_urls相关联
- javascript - UI5:如何在其他视图中重用格式化程序?
- python - 单独解决后再安装Conda环境
- api - MS Graph API 调用的数量是否有限制?
- amazon-s3 - 如何从 S3 bucket 下载不同目录的不同文件夹,也许是 bash?
- python - 正在进行异步查询时无法使用 execute
- python - 在 Pandas 的特定列中包含关键字列表(每次一个关键字)的循环过滤器
- java - 避免传递不必要参数的设计模式?
- java - 为什么@Requestparam 返回null,但值已填充?