2011-08-15 149 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:請參閱我更新後的答案,瞭解插入位置的說明你的代碼。 –