2016-09-23 6 views
-1

答えを検索しましたが、私の問題の解決策はありません。PHPで出力json配列を作る方法は?

どうすればこのように出力できますか?まずタイトル
タグ:私は

タイトルの下にこれを出したい

事前に
おかげタグ--1、タグ2、タグ-3

タイトル:2番目のタイトル
タグ:タグ-B-1、タグ-B-2、タグ-B-3

タイトル:第三タイトル
タグ:タグ-C-1、タグC-2、TAG- c-3

file.json

{ 
"videos": [ 
    { 
     "title": "First Title", 
     "tags": [ 
      { 
       "tag_name": "tag-a-1" 
      }, 
      { 
       "tag_name": "tag-a-2" 
      }, 
      { 
       "tag_name": "tag-a-3" 
      } 
     ], 
     "publish_date": "2016-09-12 16:40:14" 
    }, 
    { 
     "title": "Second Title", 
     "tags": [ 
      { 
       "tag_name": "tag-b-1" 
      }, 
      { 
       "tag_name": "tag-b-2" 
      }, 
      { 
       "tag_name": "tag-b-3" 
      } 
     ], 
     "publish_date": "2016-09-12 16:40:14" 
    }, 
    { 
     "title": "Third Title", 
     "tags": [ 
      { 
       "tag_name": "tag-c-1" 
      }, 
      { 
       "tag_name": "tag-c-2" 
      }, 
      { 
       "tag_name": "tag-c-3" 
      } 
     ], 
     "publish_date": "2016-09-12 16:40:14" 
    } 
] 

}

<?php 
    ini_set('display_errors', 1); 
    $html = "file.json"; 
    $html = file_get_contents($html); 
    $videos = json_decode($html, true); 

     foreach ($videos['videos'] as $video) { 
      $title = $video['title']; 

      foreach ($video['tags'] as $tags) { 
       $tags = $tags['tag_name']; 

      echo 'Title: ' . $title . '<br />'; 
      echo 'Tags: ' . $tags . ', <br /><br />'; 

      } 
     } 

答えて

1

あなたの2番目の反復は間違っているようです。代わりに、最初のループでタイトル/タグを印刷する必要があります。

foreach ($videos['videos'] as $video) { 
     $title = $video['title']; 
     $tags = array(); // reset it every new item to avoid race-condition on empty one. 

     foreach ($video['tags'] as $tags) { 
      $tags[] = $tags['tag_name']; 
      // ^also add new elements here 
     } 

     echo 'Title: ' . $title . '<br />'; 
     echo 'Tags: ' . implode(',', $tags) . '<br /><br />'; 
     //   ^also join your tags 
    } 
+0

ありがとう – Anwar