<?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
属性的所有对象设为“喜欢”的正确代码是什么?
可以从here
下载Json答案 0 :(得分:2)
这实际上取决于.json对象的内容。但很可能是由于并非所有$ getlikes [$ key]都有一个&#39; type&#39;的数组键,因此导致了未定义的偏移量。在比较之前验证以确保它存在。尝试
foreach ($get_json_values as $key=>$getlikes) {
if(!isset($getlikes['type'])) continue;
if($getlikes['type']=='like') {
....
编辑:
根据您的.json文件,您只需添加一个不需要的附加密钥。更改了代码以反映正确的调用。检查是否设置了值仍然不是一个坏主意。尝试使用var_dump($ getlikes)或您正在使用的文件,以便更好地了解您正在迭代的内容。
答案 1 :(得分:1)
鉴于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逐个提取元素。