1

PHP で JSON を解析しようとしていますが、配列が多次元であり、探しているすべての名前を必ずしも知っているとは限らないため、問題が発生しています。私がやりたいことは、JSON ファイル内のすべてのアイテムの ID を取得することです。私はここを見てきましたが、私が見つけた解決策は、キーの 1 つのインスタンスに対してのみ機能するか、キーの値を知る必要があります。私が欲しいものの例を示すために、これが私の JSON です。

{
   "products_and_categories":{
      "new":[
         {
            "category_name":"Jacket",
            "name":"Half Zip Windbreaker",
            "position":3,
            "sale_price":0,
            "image_url":"0/65030/Half_Zip_Windbreaker_Green_1365029293_cart_1365029294.jpg",
            "price":14800,
            "new_item":true,
            "detail_view_url":null,
            "id":1950
         },
         {
            "category_name":"Jacket",
            "name":"The North Face\u00ae/Supreme\u003Cbr\u003EReflective 3M\u00ae Mountain Parka",
            "position":0,
            "sale_price":0,
            "image_url":"0/65059/The_North_Face--r----s--Supreme_br_Reflective_3M--r--_Mountain_Parka_Red_1365029303_cart_1365029305.jpg",
            "price":49800,
            "new_item":true,
            "detail_view_url":null,
            "id":1951
         },
         {
            "category_name":"Hats",
            "name":"Rubber Logo Camp Cap",
            "position":29,
            "sale_price":0,
            "image_url":"0/64915/Rubber_Logo_Camp_Cap_Navy_1365029249_cart_1365029251.jpg",
            "price":4800,
            "new_item":true,
            "detail_view_url":null,
            "id":1947
         }
      ],
      "Hats":[
         {
            "category_name":"Hats",
            "name":"Rubber Logo Camp Cap",
            "position":29,
            "sale_price":0,
            "image_url":"0/64915/Rubber_Logo_Camp_Cap_Navy_1365029249_cart_1365029251.jpg",
            "price":4800,
            "new_item":true,
            "detail_view_url":null,
            "id":1947
         },
         {
            "category_name":"Hats",
            "name":"Enamel S 5-Panel",
            "position":34,
            "sale_price":0,
            "image_url":"0/63614/Enamel_S_5-Panel_Green_1362616033_cart_1362616034.jpg",
            "price":5400,
            "new_item":false,
            "detail_view_url":null,
            "id":1904
         },
         {
            "category_name":"Hats",
            "name":"Big Striped Beanie",
            "position":35,
            "sale_price":0,
            "image_url":"0/61745/Big_Striped_Beanie_Green_1362023179_cart_1362023181.jpg",
            "price":3200,
            "new_item":false,
            "detail_view_url":null,
            "id":1853
         }
      ],
      "Decks":[
         {
            "category_name":"Decks",
            "name":"Power, Corruption, Lies Cruiser",
            "position":46,
            "sale_price":0,
            "image_url":"0/62026/Power__Corruption__Lies_Cruiser_Black_1362023285_cart_1362023286.jpg",
            "price":6000,
            "new_item":false,
            "detail_view_url":null,
            "id":1861
         },
         {
            "category_name":"Decks",
            "name":"Bling Logo Deck",
            "position":47,
            "sale_price":0,
            "image_url":"0/62018/Bling_Logo_Deck_Platinum_1362023282_cart_1362023283.jpg",
            "price":4900,
            "new_item":false,
            "detail_view_url":null,
            "id":1860
         }
      ],
      "Sweatshirts":[
         {
            "category_name":"Sweatshirts",
            "name":"Heathered Crewneck",
            "position":11,
            "sale_price":0,
            "image_url":"0/63855/Heathered_Crewneck_Heather_Pink_1362616124_cart_1362616125.jpg",
            "price":11800,
            "new_item":false,
            "detail_view_url":null,
            "id":1914
         },
         {
            "category_name":"Sweatshirts",
            "name":"Checkered Pullover",
            "position":12,
            "sale_price":0,
            "image_url":"0/63826/Checkered_Pullover_Yellow_1362616113_cart_1362616114.jpg",
            "price":14800,
            "new_item":false,
            "detail_view_url":null,
            "id":1913
         }
      ]
   },
   "unique_detail_view_url_prefixes":[

   ],
   "sales_available":false,
   "unique_image_url_prefixes":[
      "http://d2flb1n945r21v.cloudfront.net/production/uploaded/style/"
   ]
}

これで、新しいカテゴリのアイテムの ID だけが必要な場合にコードが機能しますが、達成したいのは JSON ファイル全体のすべてのアイテムの ID を取得することです。これが私のコードです。

<?php
$content = json_decode($json);
foreach($content->products_and_categories->new as $entry){
    echo $entry->id;
}

これを返します:

1950
1951
1947

では、他のすべてのカテゴリの ID を返すにはどうすればよいでしょうか? これを読んでくれてありがとう。

4

1 に答える 1