2013-12-20 3 views
1

У меня проблема с simpleXML в PHP. Моя проблема заключается в том, что я получаю массивы вместо строк или ints.Возвращаемый массив SimpleXML вместо строки или INT

Via file_get_contents им получить следующий XML

<?xml version="1.0" encoding="UTF-8"?> 
<data> 
    <name>579</name> 
    <price>46</price> 
</data> 

В им PHP им с помощью этого:

$xml = simplexml_load_string(file_get_contents($url)); 
print_r($xml->price) // returns array(0 => "46") instead of 46 

ли кто-то имеет представление о том, как я могу получить строки?

ответ

2

Вы должны явно привести его в виде строки (или int, в данном случае):

$price = (string) $xml->price; 
echo $price; // => string(2) "46" 
+0

Спасибо. У вас есть идея, почему arraynotation ($ xml ['price']) не работает? – AppGeer

+1

@KevinTurner: Это не ** массив. Это объект SimpleXMLElement (точнее, ресурс libxml), как 'var_dump ($ xml-> price),' скажет вам. –

0

Вы хотите использовать strval, чтобы преобразовать его из SimpleXMLElement в строку. Если вы хотите получить целочисленное значение, используйте intval.

Использование strval:

$xml = simplexml_load_string(file_get_contents($url)); 
$price = strval ($xml->price); 

или intval:

$xml = simplexml_load_string(file_get_contents($url)); 
$price = intval ($xml->price); 
Смежные вопросы