0
 <?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属性が「like」であるすべてのオブジェクトを取得するための適切なコードは何でしょうか。

Jsonはここからダウンロードできます

4

2 に答える 2

2

これは、実際には .json オブジェクトの内容に依存します。しかし、すべての $getlikes[$key] が「type」の配列キーを持っているわけではないため、未定義のオフセットが発生している可能性があります。比較する前に、存在することを確認してください。試す

foreach ($get_json_values as $key=>$getlikes) { 
    if(!isset($getlikes['type'])) continue;
        if($getlikes['type']=='like') {
    ....

編集:

.json ファイルに基づいて、不要なキーを追加しただけです。正しい呼び出しを反映するようにコードを変更しました。値が設定されているかどうかを確認することは、まだ悪い考えではありません。var_dump($getlikes) を試してみるか、使用しているファイルを試して、繰り返し処理しているものをよく見てください。

于 2013-03-15T01:56:19.900 に答える
1

JSON 文字列を考えると、何が間違っているかは明らかです。$get_json_values はインデックスのないリストです。説明が難しいキーを2倍にしています。代わりにこれを行ってください。

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 は要素を 1 つずつ抽出します。

于 2013-03-15T02:17:47.520 に答える