SimpleXMLElement Object değerini alın

5 Cevap php

Ben böyle bir şey var:

$url = "http://ws.geonames.org/findNearbyPostalCodes?country=pl&placename=";
$url .= rawurlencode($city[$i]);

$xml = simplexml_load_file($url);
echo $url."\n";
$cityCode[] = array(
    'city' => $city[$i], 
    'lat' => $xml->code[0]->lat, 
    'lng' => $xml->code[0]->lng
);

Bu geonames XML indirmek gerekiyordu. Ben yaparsam print_r($xml) alıyorum:

SimpleXMLElement Object
(
    [code] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [postalcode] => 01-935
                    [name] => Warszawa
                    [countryCode] => PL
                    [lat] => 52.25
                    [lng] => 21.0
                    [adminCode1] => SimpleXMLElement Object
                        (
                        )

                    [adminName1] => Mazowieckie
                    [adminCode2] => SimpleXMLElement Object
                        (
                        )

                    [adminName2] => Warszawa
                    [adminCode3] => SimpleXMLElement Object
                        (
                        )

                    [adminName3] => SimpleXMLElement Object
                        (
                        )

                    [distance] => 0.0
                )

Eğer $xml->code[0]->lat gördüğünüz gibi yapmak ve bir nesne döndürür. Nasıl değer alabilir miyim?

5 Cevap

Sen bir dizeye SimpleXML nesne döküm var.

$value = (string) $xml->code[0]->lat;

Ayrıca sihirli yöntemini __ toString () kullanabilirsiniz

$xml->code[0]->lat->__toString()

Eğer XML öğesinin değeri bir float sayı (enlem, boylam, mesafe) olduğunu biliyorsanız, kullanabilirsiniz (float)

$value = (float) $xml->code[0]->lat;

Ayrıca, (int) tam sayıda için:

$value = (int) $xml->code[0]->distance;

Eğer don't XML Element değerini biliyorsanız, kullanabilirsiniz

$value = (string) $xml->code[0]->lat;

if (ctype_digit($value)) {
    // the value is probably an integer because consists only of digits
}

Eğer (string) her dize ve is_int($value) döner false dönecektir, çünkü değer, bir sayı olup olmadığını belirlemek için gereken zaman çalışır

foreach ($ xml-> kodu olarak $ vals)

{ 
    unset($geonames);

    $vals=(array)$vals;

    foreach($vals as $key => $value)

      {
        $value=(array)$value;
        $geonames[$key]=$value[0];
      }

}

print_r ($ geonames);