使用应用程序的API,我可以将数据检索为JSON并将其放入数组中。
$json = file_get_contents($url);
$obj = json_decode($json);
print_r($obj);
当我打印数组时,我看到:
stdClass Object(
[metadataList] = > stdClass Object(
[metadata] = > Array(
[0] = > stdClass Object([metadataName] = > category [metadataValue] = > RECIPES)
[1] = > stdClass Object([metadataName] = > title [metadataValue] = > Easy Sugar Cookies)
)
)
)
我需要设置一个等于标题元数据值的变量(“Easy Sugar Cookies”),但我遇到了一些麻烦。
这是我到目前为止所处的位置,但我没有任何关于如何指定特定metadataValue键的运气,因为数组中有多个键。
$title = array_search('description',($obj->{'metadataList'}->{'metadata'}));
答案 0 :(得分:1)
我认为这是你想要的......
$obj = json_decode($json, true);
$value = '';
foreach($obj['metadataList']['metaData'] as $metadata) {
if($metadata['metadataName'] === 'someName') {
$value = $metadata['metadataValue'];
break;
}
continue ;
}
答案 1 :(得分:0)
$obj->{'metadataList'}->{'metadata'}
是一个对象的数组,而不是字符串。因此array_search(string, array)
将无效(除了事实上,此数组/对象结构中没有字符串description
)。
我建议您将数据解析为数组(尽管对象工作正常)并简单地遍历数组:
$obj = json_decode($json, true);
$value = '';
foreach($obj['metadataList']['metaData'] as $metadata) {
if($metadata['metadataName'] === 'someName') {
$value = $metadata['metadataValue'];
break;
}
}
答案 2 :(得分:0)
foreach(($obj->{'metadataList'}->{'metadata'}) as $sub_object)
{
if(($sub_object->{'metadataName'}) == "title")
return ($sub_object->{'metadataName'}->{'metadataValue'});
}
答案 3 :(得分:0)
脱离我的头顶
$originalValue = "";
foreach($obj->metadataList->metadata as $index=>$metadataInfo){
if($metadataInfo->metadataName =="title"){
$originalValue = $obj->metadataList->metadata[$index]->metadataValue;
$obj->metadataList->metadata[$index]->metadataValue = "hi big boy";
}
}