2015-04-17 80 views
0

使用LinkedIn API從當前用戶獲取返回的連接,我有這個工作,但我努力從LinkedIn格式化返回的數據,這樣我就可以將其保存到數據庫中供進一步使用。在循環中解析linkedin xml

返回的數據工作正常,我可以一次過與

$result = new SimpleXMLElement($response['linkedin']); 
print_r ($result); 

打印出整個轉儲但我想通過在返回的數據中的所有條目循環,節約每一個到數據庫,因爲我走。

返回的數據格式爲:

SimpleXMLElement Object ([@attributes] => Array ([total] => xxx [count] => xxx [start] => 0) [person] => Array (

[0] => SimpleXMLElement Object ([id] => xxx [headline] => xxx [first-name] => xxx [last-name] => xxx [picture-url] => xxx) 

[1] => SimpleXMLElement Object ([id] => xxx [headline] => xxx [first-name] => xxx [last-name] => xxx [picture-url] => xxx) 

[2] => SimpleXMLElement Object ([id] => xxx [headline] => xxx [first-name] => xxx [last-name] => xxx [picture-url] => xxx) 

目前,我只是想在環狀的數據回顯到屏幕的測試,而我目前的代碼是:

$result = new SimpleXMLElement($response['linkedin']); 

foreach ($result["data"] as $value) { 

$connection_id = $value["id"]; 
$connection_headline = $value["headline"]; 
$connection_fname = $value["first-name"]; 
$connection_lname = $value["last-name"]; 
$connection_photo = $value["picture-url"]; 

echo "$connection_id<br />\n"; 
echo "$connection_fname $connection_lname<br />\n"; 
echo "$connection_headline<br />\n"; 
echo "$connection_photo<br /><br />\n"; 

} 

但這不起作用。

我也曾嘗試下面的代碼從另一個SO問題(How to loop through a LinkedIn API response?

$result = new SimpleXMLElement($response['linkedin']); 

foreach ($result->values as $value) { 

$connection_id = $value->id; 
$connection_headline = $value->headline; 
$connection_fname = $value->first-name; 
$connection_lname = $value->last-name; 
$connection_photo = $value->picture-url; 

echo "$connection_id<br />\n"; 
echo "$connection_fname $connection_lname<br />\n"; 
echo "$connection_headline<br />\n"; 
echo "$connection_photo<br /><br />\n"; 

} 

但這似乎並沒有任何工作,只是導致同樣的黑屏我有我的代碼獲得。

任何有關如何遍歷返回的「SimpleXMLElement對象」數據數組的指針,將每個值保存到變量,以便我可以打印屏幕/保存到數據庫?

由於

回答

0

在這種

foreach ($result["data"] as $value) { 

您使用的「數據」不在對象存在的索引值循環通過和陣列。

您使用數組語法定義的數組就當它是一個對象
這就是爲什麼我建議使用get_object_vars()將對象轉換爲數組。

$result = get_object_vars($result); 

你已經編輯了你播種的轉儲,所以我不知道是什麼。

在get_object_vars之後執行var_dump併發布如果仍然無法使其工作。

這可能有助於找到正確的索引:

foreach ($result as $key => $value) { 
    $val = serialize($value) 
    echo "<p>key: $key value: $val</p>" 
} 

OR

foreach ($result as $key => $value) { 
    echo "<p>key: $key value: " . var_export($value); 
} 

第一次運行,你會得到一個關鍵。然後在foreach循環中使用該索引值

foreach ($result[$key] as $k=> $value) { 
+0

添加$ result = get_object_vars($ result);沒有效果。添加var_dump($ result);只是將整個未格式化的響應直接轉儲到屏幕上。既沒有幫助試圖循環訪問數組並將值分析到php變量中。 – Richard

+0

,因爲你的轉儲不顯示右括號,我不知道如何獲得person數組:'foreach($ ???? [person]' – Misunderstood