PHP: 从 XML 字符串中获取数据

PHP: get data from XML string

我在从 eBay API 字符串获取数据时遇到了一个简单的问题。我想将数字格式化为 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 响应根本没有可见的美元。

您传递的不是字符串,而是 class SimpleXMLElement 的对象。最简单的方法是在使用 (string)$price

将其传递给 number_format 之前将其转换为字符串

var_dump 为您提供类型为 SimpleXMLElement which has a __toString 的对象方法,其中 returns 直接在元素中的文本内容因此 echo $price; 将导致 8.0

USDattributes 的一部分,其中 returns 是 SimpleXMLElement 类型的对象。

您可以获得价格和将其转换为 (string)

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