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