我有这样的事情:
$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
);
Run Code Online (Sandbox Code Playgroud)
它应该从geonames下载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
)
Run Code Online (Sandbox Code Playgroud)
我可以看到$xml->code[0]->lat
,它会返回一个对象.我怎样才能获得价值?
Lui*_*tti 413
您必须将simpleXML Object转换为字符串.
$value = (string) $xml->code[0]->lat;
Run Code Online (Sandbox Code Playgroud)
sgl*_*ard 87
你也可以使用魔术方法__toString()
$xml->code[0]->lat->__toString()
Run Code Online (Sandbox Code Playgroud)
Cou*_*Web 16
如果您知道XML元素的值是浮点数(纬度,经度,距离),则可以使用 (float)
$value = (float) $xml->code[0]->lat;
Run Code Online (Sandbox Code Playgroud)
另外,(int)
对于整数:
$value = (int) $xml->code[0]->distance;
Run Code Online (Sandbox Code Playgroud)
vla*_*ras 13
如果你不知道XML Element的值,你可以使用
$value = (string) $xml->code[0]->lat;
if (ctype_digit($value)) {
// the value is probably an integer because consists only of digits
}
Run Code Online (Sandbox Code Playgroud)
当你需要确定value是否为数字时,它会起作用,因为它(string)
总是会返回字符串并is_int($value)
返回false
daz*_*act 12
对我来说,它比对象更容易使用数组,
所以,我转换了一个Xml-Object,
$xml = simplexml_load_file('xml_file.xml');
$json_string = json_encode($xml);
$result_array = json_decode($json_string, TRUE);
Run Code Online (Sandbox Code Playgroud)