2015-04-17 65 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