PHP: получить данные из строки XML - PullRequest
0 голосов
/ 20 мая 2018

У меня простая проблема с получением данных из строки API eBay.Я хочу отформатировать числа в 2 цифры 8.0> 8.00

Это прекрасно работает

echo $price;  // output: 8.0

Но ...

echo number_format($price, 2);  // output:   (nothing)

var_dump говорит мне, почему ...

var_dump($price);  
// output: object(SimpleXMLElement)#19 (2) { ["@attributes"]=> array(1) { ["currencyId"]=> string(3) "USD" } [0]=> string(3) "8.0" } 

Как мне получить 8.0 в 8.00 (я знаю, что могу использовать REGEX, но мне кажется, что это не совсем правильно)

И пока мы здесь, как я могу получить'USD'?

PS: вызов API - это findCompletedItems - и, как ни странно, в ответе XML вообще нет видимого USD.

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

var_dump дает вам объект типа SimpleXMLElement , который имеет метод __ toString , который возвращает текстовое содержимое, которое находится непосредственно в элементе, поэтому echo $price; приведет к 8.0

USD является частью атрибутов , который возвращает объект типа SimpleXMLElement.

Вы можете получить цену и валюту, приведя ее к (string)

$priceAsString = (string)$price;
$currencyIdAsString = (string)$price->attributes()->currencyId;
0 голосов
/ 20 мая 2018

Вы не передаете строку, вы передаете объект класса SimpleXMLElement.Самое простое, что вы можете сделать, это привести его к строке перед передачей в number_format, используя (string)$price

...