Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:从XML字符串获取数据_Php_Xml_Ebay Api - Fatal编程技术网

PHP:从XML字符串获取数据

PHP:从XML字符串获取数据,php,xml,ebay-api,Php,Xml,Ebay Api,从eBay API字符串获取数据时遇到一个简单的问题。我想将数字格式化为2位数8.0>8.00 这个很好用 echo $price; // output: 8.0 但是 echo number_format($price, 2); // output: (nothing) var_垃圾场告诉我为什么 var_dump($price); // output: object(SimpleXMLElement)#19 (2) { ["@attributes"]=> array(1

从eBay API字符串获取数据时遇到一个简单的问题。我想将数字格式化为2位数8.0>8.00

这个很好用

echo $price;  // output: 8.0
但是

echo number_format($price, 2);  // output:   (nothing)
var_垃圾场告诉我为什么

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响应根本没有可见的USD。

您传递的不是字符串,而是类的对象
SimpleXMLElement
。最简单的方法是将其转换为字符串,然后使用
(string)$price

将其传递为number\u格式。var\u dump为您提供了一个类型的对象,该对象有一个方法返回直接位于元素中的文本内容,因此
echo$price将导致
8.0

USD
是返回SimpleXMLElement类型的对象的一部分

您可以将价格和货币转换为
(字符串)


谢谢这正是我想要的。然而,我真的不明白为什么我可以解析'8.0'而不是'USD'。
$priceAsString = (string)$price;
$currencyIdAsString = (string)$price->attributes()->currencyId;