2013-11-25 2 views
0

Я хочу, чтобы получить ключ и значения из строки JSON, как показано нижеЕогеасп в JSon декодировании не работает

JSON:

[{ 
    "EXTAPP_ID": "9901", 
    "CATEGORY_ID": "10", 
    "LANGUAGE_CODE": "tr", 
    "CATEGORY_LANG_DESC": "Sat\u0131\u015f Departman\u0131" 
}, { 
    "EXTAPP_ID": "9901", 
    "CATEGORY_ID": "10", 
    "LANGUAGE_CODE": "de", 
    "CATEGORY_LANG_DESC": "Sales Abteilung" 
}, { 
    "EXTAPP_ID": "9901", 
    "CATEGORY_ID": "20", 
    "LANGUAGE_CODE": "de", 
    "CATEGORY_LANG_DESC": "Procurement Abteilung" 
}, { 
    "EXTAPP_ID": "9901", 
    "CATEGORY_ID": "20", 
    "LANGUAGE_CODE": "tr", 
    "CATEGORY_LANG_DESC": "Sat\u0131nalma Departman\u0131" 
}, { 
    "EXTAPP_ID": "9901", 
    "CATEGORY_ID": "10", 
    "LANGUAGE_CODE": "en", 
    "CATEGORY_LANG_DESC": "Sales Department" 
}, { 
    "EXTAPP_ID": "9901", 
    "CATEGORY_ID": "20", 
    "LANGUAGE_CODE": "en", 
    "CATEGORY_LANG_DESC": "Procurement Department" 
}] 

PHP:

$string = json_decode($_POST['json'], true); 
foreach($string as $key => $value) { 
    echo $key . " : " . $value; 
} 

это возвращается

0 : Array1 : Array2 : Array3 : Array4 : Array5 : Array 
+2

'$ string' - очень плохой выбор имени переменной для декодированного массива. Единственное, что мы можем быть уверены, что '$ string' не является строкой. – Spudley

+0

В стороне, проблема в том, что вы перебираете верхний уровень декодированного массива, но игнорируете тот факт, что это многоуровневая структура. Попробуйте использовать 'print_r ($ value)' вместо вашего выражения 'echo'. – Spudley

ответ

1

Вы получаете этот результат, потому что ваш JSON имеет массив объектов (который PHP анализирует как массив массивов). Вам нужен вложенный цикл:

foreach($string AS $array) { 
    foreach($array AS $key => $value) { 
     echo $key . " : " . $value; 
    } 
} 

Рабочий пример: http://3v4l.org/Ee1iF

+0

thx. это работает – Calipso

0

Вы возвращаете массив объектов не значений. Вам необходимо проанализировать этот объект как:

foreach($string as $object) { 
     foreach($object as $key => $value) { 
      echo "Key :" .$key; 
      echo "Value :" . $value; 
     } 
} 
Смежные вопросы