2013-03-23 2 views
1

Позвольте мне объяснить мою проблему, я должен позвонить веб-сервиса, прежде чем форма контакта показано, возвращение веб-сервиса:JSON массив стандартного массива

$items = json_decode('[{"location":[{"building":["Building1"],"name":"Location1"}],"name":"Organization1"},{"location":[{"building":["Building2"],"name":"location2"}],"name":"Organisation2"},{"location":[{"building":["Building3"],"name":"Location3"}],"name":"Organization3"}]'); 

Здесь я добыли только организации, места и здание, используя следующий код:

foreach($items as $each){ 
    echo $each->location[0]->building[0]; 
    echo $each->location[0]->name; 
    echo $each->name; 
} 

Я хотел бы получить значение организаций, здания и места в различных массивах в этом формате:

("building1", "building2", "building3") 
("organisation1", "organisation2", "organisation3") 
("location1", "location2", "location3") 
+1

Ну то, что вы делаете, организация имеет несколько мест? Я спрашиваю, потому что формат, выбранный для JSON, специально позволяет использовать несколько мест для каждой организации. Или вы не собираетесь перекрестно ссылаться на цифровые клавиши? – prodigitalson

+0

ну, я действительно хотел сделать что-то вроде этого, вы прочитали мой разум, у вас есть идея по этому поводу – user2201395

+0

http://stackoverflow.com/questions/8695572/how-to-convert-this-json-to -php-array-and-only-how-to-get-specific-values-only –

ответ

1

Чтобы взять существующий код и немного изменить его;

$buildings = array(); 
$organisations = array(); 
$locations = array(); 
foreach($items as $each){ 
    $buildings[] = $each->location[0]->building[0]; 
    $organisations[] = $each->location[0]->name; 
    $locations[] = $each->name; 
} 

Результаты теперь находятся в переменных, определенных в верхней части. [] просто сообщает ему добавить значение в конец массива.

+0

location [0] -> здание [0]); organisations.push ($ each-> location [0] -> name); locations.push ($ each-> name); } есть некоторая ошибка в строках var зданий – user2201395

+0

@bfavaretto oops! Ты прав. Я исправил это. – Dave

+0

@ user2201395 попробуйте сейчас. Я ошибочно думал, что вы используете JavaScript. – Dave

0

Вот как это сделать:

$arrays = array(); 
$arrays['buildings'] = array(); // buildings 
$arrays['organisations'] = array(); 
$arrays['locations'] = array(); 
foreach($items as $each){ 
    $arrays['buildings'][] = $each->location[0]->building[0]; 
    $arrays['organisations'][] = $each->location[0]->name; 
    $arrays['locations'][] = $each->name; 
} 
Смежные вопросы