<?php
$json_string = file_get_contents('infile.json');
$get_json_values=json_decode($json_string,true);
foreach ($get_json_values as $key=>$getlikes) {
if($getlikes[$key]['type']=='like') {
?>
<div><p><?php echo $getlikes['name'] ?></p></div>
<?php
}}
?>
上面的代码中有一个错误:if行上未定义的偏移量。我猜是因为$getlikes[$key]['type']
错了。获得type
属性为"喜欢"的所有对象的适当代码是什么?
Json可以从这里下载
这实际上取决于.json对象的内容。但最有可能的是,未定义的偏移量是由于不是所有的$getlikes[$key]都有一个'type'的数组键引起的。在比较之前验证以确保它存在。试着
foreach ($get_json_values as $key=>$getlikes) {
if(!isset($getlikes['type'])) continue;
if($getlikes['type']=='like') {
....
编辑:基于你的。json文件,你只是添加了一个额外的键,这是不需要的。更改代码以反映正确的调用。检查是否设置了值仍然是个不错的主意。尝试对正在使用的文件执行var_dump($getlikes),以便更好地了解正在迭代的内容。
给出JSON字符串,很明显你做错了什么。$get_json_values是一个没有索引的列表,您在键上加倍,很难解释。
foreach ($get_json_values as $getlikes) {
if($getlikes['type']=='like') {
如果你要使用$key,你可以这样使用
foreach ($get_json_values as $key=>$getlikes) {
if($get_json_values[$key]['type']=='like') {
但是你不会那样做。Foreach逐个提取元素