使用PHP在JSON中按值检索数据

时间:2017-09-01 09:19:51

标签: php json

我正在尝试在JSON文件中搜索并从同一对象返回不同的值。

JSON看起来像这样:

{ {2}}

我想通过按名称搜索来检索“apiKey”值。我知道这可以使用{ "source": { "name": "source1", "url": "https://someurl", "apiKey": "someapi" }, "targets" : [ { "name" : "target1", "url": "https://target1url", "apiKey": "target1api" }, { "name" : "target2", "url": "https://target2url", "apiKey": "target2api" } ] } foreach()语句完成,但我无法获得该值。我的PHP代码是这样的:

if

将“名称”与其他属性放在同一级别是不好的做法?例如,“name”应该是父名称而其他值是否为其子项?或者,如果JSON没问题,你能帮助我理解为什么上述不起作用吗?

2 个答案:

答案 0 :(得分:1)

您的数据结构没有任何问题。

您的代码无效的原因是您已使用TRUE将结构转换为数组作为json_decode($json, true);的第二个参数,但您仍然将结果数据结构作为对象进行寻址。只需删除TRUE参数,生成的PHP数据将保留为对象,如此

$f = file_get_contents('tst.json');

$json = json_decode($f);
//print_r($json);
foreach ($json->targets as $obj){
    if ( $obj->name == 'target1') {
        echo $obj->apiKey;
    }
}

答案 1 :(得分:1)

它是非对象,它的数组。重写你的循环。

ID<-c("A","A","B","B","C","C","D","D")
CW<-c(1,2,1,2,1,2,1,2)
Value<-c(1,1,3,3,NA,NA,6,6)
dt<-cbind(ID,CW,Value)