类型错误:“不支持的操作数类型:字符串*浮点数”

问题描述 投票:0回答:3

我有错误:

TypeError Unsupported operand types: string * float
错误在这一行:
$pricere1 = $db_price * $validate->getIntervalFactor($runtime) * $mainrabatt_script;
我试图找到错误,但对我来说没有任何作用:/

php
3个回答
3
投票

所以你将

string
float
相乘。您的变量之一保存
string
值。 您可以
var_dump()
查看哪个变量保存字符串数据,并将值更改为浮点型。否则,您可以将这些变量转换为
float

$pricere1 = (float)$db_price * (float)$validate->getIntervalFactor($runtime) * (float)$mainrabatt_script;

1
投票

以下一项或多项是

String

  • $db_price
  • $validate->getIntervalFactor($runtime)
  • $mainrabatt_script

当尝试将值相乘时,如果 PHP 发现

String
,那么它会尝试将其转换为数值。但是,某些
String
值不是数字。我相信
$mainbratt_script
不是数字,PHP 无法转换它。

要解决您的问题,请确保仅相乘数值。


0
投票

当 PHP 无法自动将字符串转换为数字以执行您要求的数学运算时,就会发生此错误。

例如,

'5' * '1.5'
将给出
7.5
,但
'apples' * 'oranges'
将给出您所看到的错误。

这意味着

$db_price
不包含任何看起来像数字的内容。它可能是一个空字符串,或者可能是格式错误,例如
'€42.00'
而不仅仅是
'42.00'

您需要调试代码以找出该值是什么,以及为什么它不是您期望的值。 不要只是将值强制为浮点数 - 这将使错误消失,但只能将所有无效值强制为零,这可能会导致更严重的问题。

© www.soinside.com 2019 - 2024. All rights reserved.