从JSON文件中获取数据而不在php中建立索引

时间:2018-10-16 10:19:24

标签: php json

我有一个像这样的JSON文件

[
{
    "item_id": "342",
    "item_title": "James"
  },
{
    "item_id": "374",
    "item_title": "Fred"
  }
]

我想在PHP中使用item_id获得item_title。

我将如何处理?

我有

$item_id = 374;
$url = 'file.json'; 
$data = file_get_contents($url); 
$items = json_decode($data); 

谢谢。

2 个答案:

答案 0 :(得分:2)

一些解释:您应在foreach loop条件下使用if

这是示例代码

<?php
$json='[
{
    "item_id": "342",
    "item_title": "James"
  },
{
    "item_id": "374",
    "item_title": "Fred"
  }
]';
$item_id = 374;

$items = json_decode($json); 
//print_r($items);
foreach($items as $value){
    if($value->item_id==$item_id){
        echo $value->item_title;
    }
}

您可以检查所需的output here

答案 1 :(得分:2)

如果您知道密钥将始终存在,则可以使用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