2012-08-14 60 views
0

我使用聯邦快遞的API爲他們的商店查找「dropoff」位置,然後我將使用地圖API(Google)顯示。面向對象的PHP數組 - 從OO創建「位置」列表PHP數據

該API正在工作,但我有麻煩,因爲我不熟悉面向對象的數組。

我想將數組中的值存儲爲唯一變量,因此我可以將它們傳遞給我的地圖API。

我試圖完成類似下面:

<?php 

// MY "IDEAL" solution - any other ideas welcome 
// (yes, reading up on Object Oriented PHP is on the to-do list...) 

$response = $client ->fedExLocator($request); 

if ($response -> HighestSeverity != 'FAILURE' && $response -> HighestSeverity != 'ERROR') 
{ 
    $response -> BusinessAddress -> StreetLines[0] = $location_0; 
    $response -> BusinessAddress -> StreetLines[1] = $location_1; 
    $response -> BusinessAddress -> StreetLines[2] = $location_2; 
} 

?> 

工作聯邦快遞代碼示例:

<?php 

$response = $client ->fedExLocator($request); 

if ($response -> HighestSeverity != 'FAILURE' && $response -> HighestSeverity != 'ERROR') 
{ 
    echo 'Dropoff Locations<br>'; 
    echo '<table border="1"><tr><td>Streetline</td><td>City</td><td>State</td><td>Postal Code</td><td>Distance</td></tr>'; 
    foreach ($response -> DropoffLocations as $location) 
    { 
     if(is_array($response -> DropoffLocations)) 
     { 
      echo '<tr>'; 
      echo '<td>'.$location -> BusinessAddress -> StreetLines. '</td>'; 
      echo '<td>'.$location -> BusinessAddress -> PostalCode. '</td>'; 
      echo '</tr>'; 
     } 
     else 
     { 
      echo $location . Newline; 
     } 
    } 
    echo '</table>'; 
} 

?> 
+1

你想要將位置存儲到哪個數組?你也可以打印一個典型的'$ response'對象的var_dump嗎? – 2012-08-14 21:13:36

+1

你爲什麼要分配給從Fedex收到的'$ response'數組?這是你的數據*來源*。您應該將這些值分配給您自己的數據對象。 – 2012-08-14 21:14:38

+0

試試'$ response-> DropOffLocations [0] - > BusinessAdress-> StreetLines [0]'而不是'$ response-> BusinessAdress-> StreetLines [0]'。 – jeremy 2012-08-14 21:15:00

回答

1

OK,從我所知道的,$response對象有兩個成員:$response->HighestSeverity ,它是一個字符串,而$response->DropoffLocations是一個數組。 $response->DropoffLocations只是陣列,它的臉上沒有什麼奇特的。你可以用方括號引用它的條目(例如$response->DropoffLocations[0]等),或者像他們那樣用foreach來通過它。

關於數組的唯一「面向對象」,除了它是對象成員之外,它的條目是對象,而不是簡單的值。

因此,您將索引放在錯誤的地方(並且完全缺少DropoffLocations)。相反的,例如,這樣的:

$response -> BusinessAddress -> StreetLines[0] = $location_0; 

你應該索引$response->DropoffLocations本身,然後從每個條目拉動成員變量,就像這樣:

$response -> DropoffLocations[0] -> BusinessAddress -> StreetLines = $location_0; 

待辦事項@ PeterGluck的評論,雖然。這是不太可能的,你想設置該值任何東西。

+1

不是'$ response-> DropOffLocations [0] - > BusinessAdress-> StreetLines' ,因爲'foreach'不是來自'$ response',而是來自'$ response-> DropOffLocations'? – jeremy 2012-08-14 21:17:30

+0

'$ response'不是一個數組。這是一個清楚的對象。 – 2012-08-14 21:18:02

+0

@Nile:嗯,剛剛注意到,修復了。 – KRyan 2012-08-14 21:19:29