You have to cast simpleXML Object to a string.
$value = (string) $xml->code[0]->lat;
You can also use the magic method __toString()
$xml->code[0]->lat->__toString()
If you know that the value of the XML element is a float number (latitude, longitude, distance), you can use (float)
$value = (float) $xml->code[0]->lat;
Also, (int)
for integer number:
$value = (int) $xml->code[0]->distance;
if you don't know the value of XML Element, you can use
$value = (string) $xml->code[0]->lat;
if (ctype_digit($value)) {
// the value is probably an integer because consists only of digits
}
It works when you need to determine if value is a number, because (string)
will always return string and is_int($value)
returns false
For me its easier to use arrays than objects,
So, I convert an Xml-Object,
$xml = simplexml_load_file('xml_file.xml');
$json_string = json_encode($xml);
$result_array = json_decode($json_string, TRUE);
This is the function that has always helped me convert the xml related values to array
function _xml2array ( $xmlObject, $out = array () ){
foreach ( (array) $xmlObject as $index => $node )
$out[$index] = ( is_object ( $node ) ) ? _xml2array ( $node ) : $node;
return $out;
}
try current($xml->code[0]->lat)
it returns element under current pointer of array, which is 0, so you will get value
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With