2013-10-08 3 views
1

Привет Я пытаюсь разобрать это значение из базы данных Joomla в базе zoo.Parse json value

{ 
    "1f1292f5-0d8f-4c53-9260-07b074aa5bf1": { "0": { "value": "lit_ZetaPlus_zeta_potential_analyzer.html" } }, 
    "26a0f41d-5514-4855-9cb2-175b662fe350": { "0": { "value": "ZetaPlus" } }, 
    "9ab61998-c48e-45d7-8160-e563ba81b851": { "0": { "value": "Zeta Potential Analyzers" } }, 
    "2616ded9-e88b-4b77-a92c-2c4c18bb995f": { "0": { } }, 
    "08795744-c2dc-4a68-8252-4e21c4c4c774": { "0": { } }, 
    "2e3c9e69-1f9e-4647-8d13-4e88094d2790": { "0": { } }, 
    "fdcbebaa-e61a-462d-963e-aff74ff95499": { "0": { } } 
} 

После 4 часов поворота его к массиву, а затем к объекту, который я провалил до сих пор. Почувствую помощь в том, что я делаю неправильно. Это то, что я получил до сих пор.

$decode = (array) json_decode($row['elements']); 

foreach ($decode as $values) { 
    echo $values[0]; 
} 

ответ

3

Используйте второй параметр json_decode (documentation):

$decoded = json_decode($row['elements'], true); 

Это дает декодированного JSON как ассоциативный массив, а не объект.

Ваш приведение к массиву не является рекурсивным, поэтому он изменит объект верхнего уровня на массив. Все объекты в коллекции будут оставаться в виде объектов.

Если вы оставите свой JSON как объекты, вы можете попытаться получить доступ к цифровым клавишам, так как $value->0 не будет работать. Вместо этого вам нужно будет сделать $value->{'0'}. Таким образом, ассоциативный массив может быть более простым вариантом :-)