将simpleXML的浮点(7.2)与PHP5.6相乘
我试图在一个面向对象的PHP项目中为XML文件做一个简单的乘法运算 在MariaDB中,数据保存为浮点(8.2)。我得到这个错误: 无法在[file online…]中将ArticlePrice类的对象转换为int 然后我尝试将其转换为float(而不是minifalot),如下所示:将simpleXML的浮点(7.2)与PHP5.6相乘,php,oop,floating-point,type-conversion,int,Php,Oop,Floating Point,Type Conversion,Int,我试图在一个面向对象的PHP项目中为XML文件做一个简单的乘法运算 在MariaDB中,数据保存为浮点(8.2)。我得到这个错误: 无法在[file online…]中将ArticlePrice类的对象转换为int 然后我尝试将其转换为float(而不是minifalot),如下所示: $productPrice = $article->getUsualPrice(CountryPublic::getByShortCut('a')); $productPriceNew = (float)$
$productPrice = $article->getUsualPrice(CountryPublic::getByShortCut('a'));
$productPriceNew = (float)$productPrice*1.8;
我得到的信息是:
ArticlePrice类的对象在中无法转换为double
我做错了什么?您实际上试图将对象投射到浮动中
$article->getUsualPrice(CountryPublic::getByShortCut('a'));
你的方法getUsualPrice
返回一个对象ArticlePrice
,你应该在你的类ArticlePrice
上放置一个getter来访问它里面的属性price
,然后将它转换成浮点数
$article->getUsualPrice(CountryPublic::getByShortCut('a'));
这是一个直截了当的解决方案,但就概念而言,可能不是最美的
如果你尝试像
var_dump($article->getUsualPrice(CountryPublic::getByShortCut('a')) instanceof ArticlePrice)
您可以看到您在float中投射了一个对象
在您的评论之后
object(ArticlePrice)#11396 (15) {
["id":protected]=> string(36) "7f01d63a-3f08-480a-b798-c83f6ddbdb94"
["articleID":protected]=> string(36) "65983c99-66e4-43689ba7039dc5e742c0"
["countryID":protected]=> string(36) "31149178-8a2a-4e57-8133-ca12004a59dd"
["price":protected]=> string(5) "13.50"
你看你上了名为“价格”的属性
您只需要对该属性执行操作,而不需要对对象执行操作。
您的类中可能有一个名为getPrice()的getter
以下代码将正常工作:
(float)$article->getPrice(CountryPublic::getByShortCut('a'))->getPrice()
但是您可能需要花点时间考虑一下方法的名称,在第
$productPriceNew=(float)$productPrice*1.8行之前有两个名为getPrice()
writevar\u dump($productPrice)
的方法是多余的代码>输出是什么?哪一行出现了错误?看起来您的getPrice
和getUsualPrice
方法返回的是类对象,而不是数字。您的ArticlePrice
类是否有一种方法可以将价格作为数字获取?你需要调用它。ArticlePrice
不是一个标准的PHP类,我们只能猜测它是如何工作的。始终使用$productPriceNew的最后一行得到错误谢谢,但我如何才能做到这一点?article->getUsualPrice(CountryPublic::getByShortCut('a')
返回对象ArticlePrice。向对象ArticlePrice
添加一个新方法,如getAmount()
,该方法返回包含价格的属性。因此,您可以编写类似于(float)$article->getUsualPrice(CountryPublic::getByShortCut('a'))->getAmount()的内容