首页 > 解决方案 > 从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); 

谢谢你。

标签: phpjson

解决方案


如果您知道该键将始终存在,则可以使用array_search()array_column()

echo $items[array_search($item_id,array_column($items,'item_id'))]['item_title'];

https://3v4l.org/Qddcj

否则,请使用功能方法

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

输出:- https://3v4l.org/ikKWY

如果相同的 id 可以重复多次

$items = json_decode($json,true); 
foreach($items as $value){
    if($value['item_id']==$item_id){
        echo $value['item_title'].PHP_EOL;
    }
}

输出:- https://3v4l.org/7oPHk


推荐阅读