2011-07-18 147 views
0

这里是我的功能:创建函数返回2个变量?

<?php 
function latLng($str){ 
    $address = $str; 
    // Initialize delay in geocode speed 
    $delay = 0; 
    $base_url = "http://maps.google.com/maps/geo?output=xml&key=" . $key; 

    // Iterate through the rows, geocoding each address 
    $geocode_pending = true; 
    $request_url = $base_url . "&q=" . urlencode($address); 
    $xml = simplexml_load_file($request_url) or die("url not loading"); 

    $status = $xml->Response->Status->code; 
    if (strcmp($status, "200") == 0) { 
     // Successful geocode 
     $geocode_pending = false; 
     $coordinates = $xml->Response->Placemark->Point->coordinates; 
     $coordinatesSplit = split(",", $coordinates); 
     // Format: Longitude, Latitude, Altitude 
     $lat = $coordinatesSplit[1]; 
     $lng = $coordinatesSplit[0]; 
    } else if (strcmp($status, "620") == 0) { 
     // sent geocodes too fast 
     $delay += 100000; 
    } else { 
     // failure to geocode 
     $geocode_pending = false; 
     echo "Address " . $address . " failed to geocoded. "; 
     echo "Received status " . $status . "\n"; 
     usleep($delay); 
    } 
    echo $lat . "<br />"; 
    echo $lng; 
} 

echo latLng("Praha City Center, Klimentska 46, Prague, Czech Republic, 11002"); 
?> 

它回声页上的纬度和经度完美,但我想他们回来作为变量,所以基本上我在功能包的地址,然后$lat$lng变量返回到页面供我使用。

我该如何去做这件事?

谢谢

回答

1

两个选项:

  1. 返回$coordinatesSplit阵列来代替,而需要
  2. 打印时,其元素
  3. 使两种副REF参数功能:

    function latLng($str, &$lat, &$lng) { 
        //..... 
        $lat = $coordinatesSplit[1]; 
        $lng = $coordinatesSplit[0]; 
        // .... 
    } 
    

然后用它们:

 $lat = $lng = null; 
    latLng("Praha City Center, Klimentska 46, Prague, Czech Republic, 11002", $lat, $lng); 
    echo $lat; 
    echo $lng; // or whatever you want to do with them 
1

你可以返回他们作为阵列();

return array('lat' => $lat, 'lng' => $lng); 
2
$returnArray['latitude'] = $lat; 
$returnArray['longitude'] = $lng; 

return $returnArray; 

或者更好的是,让所谓的EarthCoordinate对象具有纬度和长,并把它们设置为。那么你可以做的方法来找到经/纬等之间的距离......

+0

” ......找不到之间的距离经纬度/长等...' - 让你听起来很简单! – tomfumb

+0

大声笑,我的意思是当然坐标对之间的距离:) – Zak

0

您可以使用数组或只是结合了,并返回他们:

<?php 
    function latLng($str){ 
    ....... 
    ....... 
    geo_data = array() 
    geo_data['lat'] = $lat; 
    geo_data['lng'] = $lng; 

    return $geo_data; 
    } 

    $geo_data = latLng("Praha City Center, Klimentska 46, Prague, Czech Republic, 11002"); 
    var_dump($geo_data); 

?> 

,应该帮助

//编辑 哦,等一下 - 你已经在使用数组。

只使用

return $coordinatesSplit; 

并调用该函数:

$geo_data = latLng("Praha City Center, Klimentska 46, Prague, Czech Republic, 11002"); 
var_dump($geo_data); 

$ geo_data [1] =纬度 $ geo_data [0] = LNG