2017-10-10 73 views
1

我有一些代码拒绝运行,出现错误;在文本字符串上遇到的“格式不正确的数字”

[ErrorException]        
A non well formed numeric value encountered 

我读很多关于它,但所有的解决方案似乎已经处理了人不使用number_formatdatestrtotime正确。

我的代码可以像下面一样简单,同时给出错误;

$plan == 'Event'; 
if($plan !== 'Event') { 
    $cost_of_report = $cost_of_report * 2; 
} 

该行$cost_of_report = $cost_of_report * 2;独立工作。

我回应了gettype($plan),它是一个字符串。

我在Laravel artisan命令中使用它,在PHP 5.6.31中使用Laravel 4.2。

有没有人有任何想法什么是错的,或者我可以做些什么来尝试使这个工作?

+0

用于记录:'$ plan =='Event';'不会将值赋给'$ plan'。如果是这样,if条件不会导致'true',因此永远不会运行'$ cost_of_report = $ cost_of_report * 2;'。也许编辑你的“简单”片段。这个例外是否因为'if'永远不会被满足,并且'$ cost_of_report'从来不会作为算术重新计算? – mickmackusa

回答

2

我相信这里的问题不是$plan而是$cost_of_report。确保它是编号

+0

感谢Marcin,我回应了那个变量的gettype,它是一个字符串,所以我在那里写了一行'$ cost_of_report = floatval($ cost_of_report);'现在它可以工作。我会将你的答案标记为正确的,但你能解释为什么'$ cost_of_report = $ cost_of_report * 2;'在if语句之外工作吗? –

+0

它应该在'if'或其外部没有任何区别。所以,也许你有不同的价值,或者这是PHP的错误,或者这是你的服务器/环境相关 - 请参阅https://github.com/getgrav/grav/issues/928 –

0

确保在计算之前您还没有将$ cost_of_report转换为number_format()。

尝试转换为number_format()

希望这有助于之前做一些计算。

+0

并避免$ cost_of_report =“100”;因为这将假定100是一个字符串而不是一个整数。 –