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 を追加すると、何も起こらず、実際の問題が何であるかがわかります。しかし、問題は、これを行う適切な方法は何ですか? 非常に単純だと確信していますが、これに1時間以上苦労しています。私の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 に答える