2013-03-23 107 views
1

讓我解釋一下我的問題,我應該調用Web服務顯示的聯繫方式之前,Web服務的回報是: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 2013-03-23 03:30:24

+0

好吧,我真的想做一些這樣的事情,你已經讀過我的想法,你有什麼想法做這個 – user2201395 2013-03-23 03:37:38

+0

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

回答

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

<?php $ items = json_decode('[{「location」:[「Building1」],「name」:「Location1」}],「name」 : 「Organization1」},{ 「位置」:[{ 「建築物」:[ 「Building2」], 「名稱」: 「LOCATION2」}], 「名稱」: 「Organisation2」},{ 「位置」:[{」建築 「:[」 Building3 「],」 名稱 「:」 LOCATION3 「}],」 名稱 「:」 Organization3" }]'); var buildings = []; var organizations = []; var locations = []; foreach($ items爲$ each){ buildings.push($ each-> location [0] - > building [0]); organisations.push($ each-> location [0] - > name); locations.push($ each-> name); }在var var buildings – user2201395 2013-03-23 03:34:23

+0

@bfavaretto oops上顯示錯誤!你是對的。我修復了它。 – Dave 2013-03-23 03:36:17

+0

@ user2201395現在就試試。我誤以爲你在使用JavaScript。 – Dave 2013-03-23 03:36:42

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; 
}