У меня простая проблема с получением данных из строки 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, но это кажется неправильным)
И пока мы здесь, как я могу получить «доллары США»?
PS: используется вызов API findCompletedItems - и, как ни странно, в ответе XML вообще нет видимых долларов США.






Вы не передаете строку, вы передаете объект класса SimpleXMLElement. Самое простое, что вы можете сделать, - это преобразовать его в строку перед передачей в number_format с помощью (string)$price.
Var_dump дает вам объект типа SimpleXMLElement, который имеет метод __нанизывать, который возвращает текстовое содержимое, которое находится непосредственно в элементе, поэтому echo $price; приведет к 8.0
USD является частью атрибуты, который возвращает объект типа SimpleXMLElement.
Вы можете узнать цену и валюту, переведя ее на (string).
$priceAsString = (string)$price;
$currencyIdAsString = (string)$price->attributes()->currencyId;
Спасибо. Работает именно так, как я хотел. Однако я действительно не понимаю, почему я могу разбирать «8.0», а не «USD».