PHP: получить данные из XML-строки

У меня простая проблема с получением данных из строки 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 вообще нет видимых долларов США.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
133
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Спасибо. Работает именно так, как я хотел. Однако я действительно не понимаю, почему я могу разбирать «8.0», а не «USD».

yello 20.05.2018 11:48
Ответ принят как подходящий

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

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

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

$priceAsString = (string)$price;
$currencyIdAsString = (string)$price->attributes()->currencyId;

Другие вопросы по теме