Как я могу извлечь только этот ключ из этого многомерного ассоциативного массива

#php #json #multidimensional-array #associative-array

#php #json #многомерный массив #ассоциативный массив

Вопрос:

Как я могу извлечь значения массива «атрибуты» из этого многомерного массива?

 $json ='[
      {
        "attributes": [
          {
            "attributeID": 3216,
            "attributeValue": "white",
            "skuImageUrl": "image.jpg"
          },
          {
            "attributeID": 450,
            "attributeValue": "S",
            "attributeDisplayName": "gray"
          }
        ],
        "cargoNumber": "",
        "amountOnSale": 446,
        "skuCode": "3740158232110",
        "skuId": 3740158232110,
        "specId": "94d1d179497744028aa76873afdeba62",
        "consignPrice": 18.5
      },
      {
        "attributes": [
          {
            "attributeID": 3216,
            "attributeValue": "Walking",
            "skuImageUrl": "ball.jpg",
            "attributeDisplayName": "waiting"
          },
          {
            "attributeID": 450,
            "attributeValue": "M",
            "attributeDisplayName": "stay"
          }
        ],
        "cargoNumber": "",
        "amountOnSale": 0,
        "skuCode": "3740158232111",
        "skuId": 3740158232111,
        "specId": "cef93beef156f1799e736c649f36efae",
        "consignPrice": 18.5
      }
]'
  

Я пытался использовать циклы for, но я запутался. Решил попробовать циклы foreach, но в итоге запутался еще больше. Пожалуйста, как я могу этого добиться? Я имею в виду использование только массива атрибутов из цикла.

Ответ №1:

Попробуйте:

 $jsonD = json_decode($json);
var_dump($jsonD[0]->attributes);

array(2) {
  [0]=>
  object(stdClass)#1 (3) {
    ["attributeID"]=>
    int(3216)
    ["attributeValue"]=>
    string(5) "white"
    ["skuImageUrl"]=>
    string(9) "image.jpg"
  }
  [1]=>
  object(stdClass)#2 (3) {
    ["attributeID"]=>
    int(450)
    ["attributeValue"]=>
    string(1) "S"
    ["attributeDisplayName"]=>
    string(4) "gray"
  }
}

foreach($jsonD[0]->attributes as $attribute){
}
  

Комментарии:

1. Я не уверен, но у json_decode него есть некоторые требования, такие как и определенная версия php и так далее? Существует небольшой список, который я нашел здесь .

2. В нем перечислены версии: (PHP 5> = 5.2.0, PHP 7, PECL json> = 1.2.0)

3. Отлично! Вы также можете добавить php требования, если (абсолютно) необходимо. В любом случае большинство людей должны были теперь переключиться на php 7.x, поскольку ветви 5.x уже достигли конца жизни.