foreach ($likes as $like) {
// Extract the pieces of info we need from the requests above
$id = idx($like, 'id');
$item = idx($like, 'name');
fwrite($fileout,json_encode($like));
fwrite($fileout,PHP_EOL );
}
$json_string = file_get_contents('testson.json');
$get_json_values=json_decode($json_string,true);
foreach ($get_json_values as $getlikes) { ?>
<li>
<a href="https://www.facebook.com/<?php echo $getlikes['id']; ?>" target="_top">
</li>
<?php
}
打开浏览器时,有一个Warning: Invalid argument supplied for foreach()
。我不明白为什么我的论点无效。
如果我添加if,则没有任何反应,这表明实际问题是什么。但问题是这是什么道路??我很确定这很简单,但我一直在努力奋斗一个多小时。我的json文件有这样的字段,所以我认为不会出现问题:
{"category":"Musician\/band","name":"Yann Tiersen (official)","id":"18359161762"}
请帮助我,我真的厌倦了,我不知道该怎么办。所以... 如何将文件解码为数组?
答案 0 :(得分:2)
您需要testson.json
文件的内容而不仅仅是名称!
通过PHP接收内容:
$json_string = file_get_contents('testson.json');
通过
测试,确保文件中有有效的JSON内容var_dump(json_decode($json_string));
然后致电
foreach (json_decode($json_string) as $getlikes) { ?>
<强>更新强> 保存文件并在几毫秒后访问它时,可能是文件系统太慢并且没有向您显示正确的内容。
添加
fclose($fileout);
clearstatcache();
在file_get_contents();
来电之前!
我建议使用
file_put_contents()
和file_read_contents()
来获取 摆脱这样的问题!
答案 1 :(得分:1)
json_decode期待一个字符串作为它的第一个参数。你正在传递我猜的文件名。你应该首先加载文件......
$json = file_get_contents('testson.json');
$data = json_decode($json);