2013-02-21 5 views
4

У меня есть JSON строку, как это:PHP цикл через JSON массив

$fields_string = ' 
{"fields": 
    {"customers":[{"name":"john","id":"d1"}, 
       {"name":"mike","id":"d2"}, 
       {"name":"andrew","id":"d3"}, 
       {"name":"peter","id":"d4"}] 
    } 
}' 

Как я могу напечатать каждое имя? Я буду использовать их позже в вариантах выбора html, я знаю, как это сделать. Но я не мог вытащить струну. Вот то, что я пробовал:

$obj = json_decode($fields_string); 
$fields_detail = $obj-?{"fields"}->{"customers"}; 

на данный момент, я могу напечатать массив клиентов путем echo json_encode($fields_detail), но до этого, я хочу, чтобы получить имя ломаются с помощью foreach. Я пробовал несколько раз, это не сработало. Может кто-нибудь помочь, пожалуйста.

Спасибо!

+0

Вы хотите получить что? Как вы пытались? Как это не сработало? – Jon

ответ

5

Клиенты представляют собой массив объектов, поэтому итерация по каждому объекту и чтение свойства должны работать.

foreach ($fields_detail as $customer) { 
    echo $customer->name; 
} 
+0

@koopajah вы пропустили второй фрагмент кода http://phpfiddle.org/lite/code/xr4-8tz – Maks3w

+0

Я вижу, что я сделал неправильно. Это все. Большое спасибо! –

+0

Спасибо, друг! работает как ожидалось! –

3

Что-то вроде этого:

$data = json_decode($fields_string, true); // return array not object 
foreach($data['fields']['customers'] as $key => $customer) { 
echo $customer['name']; 
} 
0
foreach($obj->fields->customers as $fields) 
echo $fields->name; 
1

Доступ имена через fields->customers:

$obj = json_decode($fields_string); 

foreach($obj->fields->customers as $customer) 
{ 
    echo $customer->name . "\n"; 
} 

Demo

Смежные вопросы