[php] SimpleXMLElement 객체로부터 가치 얻기

나는 이와 같은 것을 가지고있다 :

$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
);

지명에서 XML을 다운로드해야합니다. print_r($xml)내가 얻는 다면 :

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
                )

당신이 볼 수있는대로 $xml->code[0]->lat하고 객체를 반환합니다. 어떻게 가치를 얻을 수 있습니까?



답변

simpleXML 오브젝트를 문자열로 캐스트해야합니다.

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


답변

매직 메소드 __toString ()을 사용할 수도 있습니다.

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


답변

XML 요소의 값이 실수 (위도, 경도, 거리) 인 경우 다음을 사용할 수 있습니다. (float)

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

또한 (int)정수의 경우 :

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


답변

당신이 경우 하지 않는 XML 요소의 가치를 알고, 당신은 사용할 수 있습니다

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

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

(string)항상 문자열을 is_int($value)반환 하고 반환 하기 때문에 값이 숫자인지 확인해야 할 때 작동 합니다.false


답변

나를 위해 객체보다 배열을 사용하는 것이 더 쉽습니다.

Xml-Object를 변환합니다.

$xml = simplexml_load_file('xml_file.xml');
$json_string = json_encode($xml);
$result_array = json_decode($json_string, TRUE);


답변

이것은 항상 XML 관련 값을 배열로 변환하는 데 도움이 된 함수입니다.

function _xml2array ( $xmlObject, $out = array () ){
    foreach ( (array) $xmlObject as $index => $node )
        $out[$index] = ( is_object ( $node ) ) ? _xml2array ( $node ) : $node;

    return $out;
}


답변

시험 current($xml->code[0]->lat)

배열의 현재 포인터에서 0을 반환하는 요소를 반환하므로 값을 얻습니다.