2017-06-11 1 views
1

PHPでJSONファイルを解析していて、わかりやすいデータ構造で問題が発生しました。これは、1つのデータノードは、次のようになります。PHPでJSONを解析するときに兄弟値を取得する

{ 
    "data": [{ 
     "title": "Some title", 
     "subtitle": "Some subtitle", 
     "description": "Some description", 
     "labels": [{ 
      "type": "itemId", 
      "raw": "someId12345" 
     }, { 
      "type": "itemtype", 
      "raw": "general" 
     }] 
    }] 
} 

これは私が使用している非常に基本的なコードです:

$url = 'data.json'; 
$content = file_get_contents($url); 
$json = json_decode($content, true); 

foreach($json['data'] as $item) { 
    return $item['title']; 
    return $item['description']; 
} 

はタイトルと説明作品の取得が、私はこれらのラベルに苦しんでいます。 itemId(つまりsomeId12345)型の「生の」値を取得したいのですが、どのようにして取り出すことはできません。ラベルは、そうでない場合、私はちょうどIDを取得するには、このようなものを使用することができ、一定の順序ではありません。

return $item['labels'][0]['raw']; 

私は別々のforeachを作成しようとしたが、それは私だけのすべての値に正体不明のインデックスを提供します。

Some title 
Some description 
someId12345 

答えて

2

それはあなたがすでにやっていることと変わらない:

foreach ($json['data'] as $item) { 
    foreach ($item['labels'] as $label) { 
    var_dump($label['raw']); 
    } 
} 
を、私は、このデータで終わると思いますので、どのように私は兄弟の値を取得することができます

foreach($json['data'] as $ID) { 
    if($ID['labels']['itemId'] == $_GET['labels']['itemId']) { 
     return $ID['raw']; 
     break; 
     } 
} 

Demo

typeでフィルタリングする場合は、if構成:

if ($label['type'] === 'itemId') { 
    var_dump($label['raw']); 
} 
+0

ありがとう。これはすべての生の値を取得するために機能しますが、itemId型に関連付けられた生の値を取り出すことができます。それをどうやってやりますか? – yayheartbeat

関連する問題