2011-08-15 105 views
0

您好,我正在使用NOAA浮标RSS源来创建变量并将其插入到Mysql中。有一个名为标签:PHP命名空间XML数组问题

<georss:point>45.565 -34.123</georss:point> 

我已经打破了这样:

$xmlString = file_get_contents($feed_url); 
$xmlString = str_replace('georss:point','point',$xmlString); 
$xml = new SimpleXMLElement($xmlString); 
$items = $xml->xpath('channel/item'); 
$closeItems = array(); foreach($items as $item) 
{  
$latlng = explode(' ',trim($item->point)); 
$lat = $latlng[0]; 
$lng = $latlng[1]; 
} 

不过,我运行到这个问题,为$变量lat和$ LNG是所有相同饲料物品。每篇文章都有一个独特的$ lat和$ lng,所以我知道我在这里做错了什么。再次感谢,

+0

你能张贴或比较输出'$ lat'和'$ lng'的值的代码,以及作为可能改变它们的值的任何干预代码? –

+0

另外,你的意思是这两个变量值是否相互匹配,或者说'$ lat'总是一个值,'$ lng'是另一个值,但是它们对于每个记录都是一样的? –

+0

嗨乔治,返回的第一个记录是船舶 - 1969-12-31 19:00:00 lat = 39.933 lng = -75.142,第二个记录是站44065 - 纽约港入口lat = 39.933 lng = -75.142通知名称不同,但lat和lng变量相同 –

回答

1

的问题是在这里:

foreach($items as $item) 
{  
    $latlng = explode(' ',trim($item->point)); 
    $lat = $latlng[0]; 
    $lng = $latlng[1]; 
} 

您分配变量为每个记录,但从来没有使用它们的循环中。假设循环后您有更多的代码,那么代码将始终只接收为$lat$lng分配的最后一个值。

要解决这个问题,foreach()循环内将您的特定记录代码:

foreach($items as $item) 
{  
    $latlng = explode(' ',trim($item->point)); 
    $lat = $latlng[0]; 
    $lng = $latlng[1]; 
    // Do something with $lat and $lng here 
} 
+0

Hi George,似乎不想为我工作。也许我的理解不正确。这是我放置的内容:foreach($ items作为$ item,$ lat作为$ latlng [0],$ lng作为$ latlng [1]) –

+0

@matt colley:请参阅我更新后的答案,了解插入位置的说明你的代码。 –