Получить значения из json php
Подскажите как получить значения _value 24,7 и file images/237.jpg
$string = '{ "46ffacdf-8009-4e7f-9076-1f7f59b152ee": { "variations": { "0": { "_value": { "value": "24,73" }, "_sku": { "value": "79" } } }, "selected": { }, "values": { "0": { } }, "default_variant": "0" }, "48a14646-9b57-44eb-98bc-9c34139bfcd6": { "0": { "file": "images\/237.jpg", "title": "", "link": "", "target": "0", "rel": "" } }, "fff28767-8e69-4c58-ac8b-9ce290c38548": { "0": { "value": "" } }, "8056b532-4837-4514-9d20-6399215a93d9": { "value": "1" } }';
$result_parse = json_decode($string, TRUE);
Ответы (2 шт):
Автор решения: MyZik
→ Ссылка
Просто обращайтесь к JSON как к массиву:
$string = '{ "46ffacdf-8009-4e7f-9076-1f7f59b152ee": { "variations": { "0": { "_value": { "value": "24,73" }, "_sku": { "value": "79" } } }, "selected": { }, "values": { "0": { } }, "default_variant": "0" }, "48a14646-9b57-44eb-98bc-9c34139bfcd6": { "0": { "file": "images\/237.jpg", "title": "", "link": "", "target": "0", "rel": "" } }, "fff28767-8e69-4c58-ac8b-9ce290c38548": { "0": { "value": "" } }, "8056b532-4837-4514-9d20-6399215a93d9": { "value": "1" } }';
$result_parse = json_decode($string, true, 512, JSON_THROW_ON_ERROR);
$value = $result_parse['46ffacdf-8009-4e7f-9076-1f7f59b152ee']['variations'][0]['_value']['value']; // 24,73
$filePath = $result_parse['48a14646-9b57-44eb-98bc-9c34139bfcd6'][0]['file']; // images/237.jpg
var_dump($value);
var_dump($filePath);
Автор решения: Jean-Claude
→ Ссылка
В данном конкретном случае можно просто пробежаться по массиву и взять значения из первого и второго элементов. Даже если они будут в 3 или 4 элементе массива код сработает.
$string = '{ "46ffacdf-8009-4e7f-9076-1f7f59b152ee": { "variations": { "0": { "_value": { "value": "24,73" }, "_sku": { "value": "79" } } }, "selected": { }, "values": { "0": { } }, "default_variant": "0" }, "48a14646-9b57-44eb-98bc-9c34139bfcd6": { "0": { "file": "images\/237.jpg", "title": "", "link": "", "target": "0", "rel": "" } }, "fff28767-8e69-4c58-ac8b-9ce290c38548": { "0": { "value": "" } }, "8056b532-4837-4514-9d20-6399215a93d9": { "value": "1" } }';
$string = json_decode($string, true, 512, JSON_THROW_ON_ERROR);
foreach ($string as $item){
if (isset($item['variations'][0]['_value']['value'])) $value = $item['variations'][0]['_value']['value'];
if (isset($item[0]['file'])) $file = $item[0]['file'];
}
echo $value;
echo "\n";
echo $file;
//24,73
//images/237.jpg