2016-10-09 4 views
0

Мой PHP получил эту строку из Android приложенияПрочитайте этот массив в PHP

[{"id":2,"category":"Food%2C%20Drinks%20%26%20Clothes","description":"Nasi%20Lemak%2C%20Teh%20Tarik%20","cost":"5","transactionDate":"2016-10-04"},{"id":3,"category":"Food%2C%20Drinks%20%26%20Clothes","description":"Rori%20Canai","cost":"3"}] 

Затем после выполнения $data = json_decode($data,TRUE);

в строке выше, она стала:

Array 
(
    [0] => Array 
     (
      [id] => 2 
      [category] => Food%2C%20Drinks%20%26%20Clothes 
      [description] => Nasi%20Lemak%2C%20Teh%20Tarik%20 
      [cost] => 5 
     ) 

    [1] => Array 
     (
      [id] => 3 
      [category] => Food%2C%20Drinks%20%26%20Clothes 
      [description] => Roti%20Canai 
      [cost] => 3 
     ) 

) 

Но дон Не знаю, как это прочитать. Вот что я сделал:

//I pass the data above into variable $data 

$data = json_decode($data,TRUE); 

for ($i = 0; $i < count($data); $i++){  
echo "id: ".$data[$i]["id"]. ", desc: ".$data[$i]["description"]. ", cost: ".$data[$i]["cost"]; 
} 

, но он просто выводит AA A ...

* Все приведенные выше данные уже отображаются в <pre></pre>

+0

Что фактическое значение '$ data', прежде чем декодировать? Что вы получаете, если вы 'var_dump ($ data)' после декодирования? Кроме того, я бы предложил назначить другое имя переменной. –

+0

Вы использовали где-то 'urlencode()'? если да, то вместо него используйте 'rawurlencode()'. –

+2

Это хорошо работает https://3v4l.org/2Znq2 –

ответ

1

Сохранить JSON в переменную, например $json и бега json_decode($json, true) и сохраните его в переменной, например $array. Теперь вы расшифровали json в массиве. После этого вы можете перебирать массив с помощью цикла foreach. Чтобы избавиться от некоторых символов %2C%..., запустите urldecode на каждом элементе subarray. Это пример:

<?php 

$json = '[{"id":2,"category":"Food%2C%20Drinks%20%26%20Clothes","description":"Nasi%20Lemak%2C%20Teh%20Tarik%20","cost":"5","transactionDate":"2016-10-04"},{"id":3,"category":"Food%2C%20Drinks%20%26%20Clothes","description":"Rori%20Canai","cost":"3"}] 
'; 

$array = json_decode($json, true); 

foreach($array as $subArray) 
{ 
    echo urldecode($subArray['id']).'<br/>'; 
    echo urldecode($subArray['category']).'<br/>'; 
    echo urldecode($subArray['description']).'<br/>'; 
    echo urldecode($subArray['cost']).'<br/><br/>'; 
} 

И результат:

2 
Food, Drinks & Clothes 
Nasi Lemak, Teh Tarik 
5 

3 
Food, Drinks & Clothes 
Rori Canai 
3 
0
array_walk_recursive(json_decode($json, true), function(&$item, $key){ 
    $item = urldecode($item); 
}); 

foreach ($array as $item) { 
    .. 
} 
Смежные вопросы