2011-08-15 6 views
0

안녕하세요, NOAA 부이 RSS 피드를 사용하여 MySQL에 변수를 만들고 삽입합니다. 라는 제목의 태그가 : 나는 같은 세분화 한PHP 네임 스페이스 XML 배열 문제

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

: 나는으로 실행하고 문제, $의 변수 위도와 $ LNG는 모두 동일하지만

$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이 있으므로 여기에 잘못된 것을하고 있음을 알고 있습니다. 덕분에 다시

+0

당신이 비교 또는'$ lat'와'$의 lng'의 값을 출력하는 코드를 게시 할 수 :

이 문제를 해결하려면 foreach() 루프 내에서 기록을 특정 코드를 배치하려면 그 값을 변경할 수있는 개입 코드가 있습니까? –

+0

또한 두 변수 값이 서로 일치하거나'$ lat'는 항상 하나의 값이고'$ lng'은 다른 것이지만 모든 레코드에 대해 동일하다는 것을 의미합니까? –

+0

안녕하세요 조지, 첫 번째 기록이 반환됩니다 배송 - 1969-12-31 19:00:00 lat = 39.933 lng = -75.142 두 번째 기록은 44065 역입니다 - 뉴욕 항구까지의 입구 lat = 39.933 lng = -75.142 Notice 이름은 다르지만 lat와 lng 변수는 동일합니다. –

답변

1

문제는 여기에 있습니다 :

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

는 각 레코드에 대한 변수를 할당하지만, 루프 내에서이를 사용하지 않습니다. 루프 이후에 더 많은 코드가 있다고 가정하면 해당 코드는 항상 $lat$lng에 할당 된 마지막 값만 수신합니다. 뿐만 아니라,

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

안녕하세요. George는 나와 일하고 싶지 않습니다. 아마 나는 정확하게 이해하고 있지 않습니다. 여기에 내가 놓은 것이있다. foreach ($ item, $ lat as $ latlng [0], $ lng as $ latlng [1]) –

+0

@matt colley : 삽입 할 곳에 대한 설명은 업데이트 된 답변을 참조하십시오. 당신의 코드. –