#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 уже достигли конца жизни.