1
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"}

请帮助我,我真的厌倦了它,我不知道该怎么办。那么...如何将文件解码为数组?

4

2 回答 2

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()摆脱这些问题!

于 2013-03-11T16:29:35.010 回答
1

json_decode 需要一个字符串作为它的第一个参数。你正在传递我猜是一个文件名。您应该像这样首先加载文件...

$json = file_get_contents('testson.json');
$data = json_decode($json);
于 2013-03-11T16:31:12.733 回答