将较大的字符串值转换为数字 laravel。 (int) 给出错误的值
Posted
技术标签:
【中文标题】将较大的字符串值转换为数字 laravel。 (int) 给出错误的值【英文标题】:convert large values of string to number laravel. (int) gives wrong value 【发布时间】:2020-04-06 10:35:07 【问题描述】:当我这样做时:
$var = (int)('5000');
dd($var); //outputs 5000
$query = Mymodel::find($id);
dd($query->loan_amount); //outputs "1,040,000.00"
还有:
$var = (int)($query->loan_amount);
dd($var); //outputs 1
最后:
$query = Mymodel::find($id);
dd($query->loan_amount); //outputs the picture below
我可以知道为什么吗?以及如何修复大数字?
【问题讨论】:
无法复现,你用的是什么版本的 Laravel/php? 你 100% 确定它是字符串'1040000'
吗?没有其他符号,也没有一个零是字母“O”?
Laravel 框架 5.8.36 || PHP 7.3.9 @kerbholz
请检查您的输入是否准确1040000
。
字符串 1,040,000.00
在转换为整数时将转换为 1
,因为逗号 - 它将其解释为小数分隔符。
【参考方案1】:
Model Collection
有104000
但输出显示1,040,000.00
。所以你可能用过Accessor / Mutator
。
你可以试试这个转换,
// remove `,` then convert.
$loan_amount = (int) (str_ireplace(',', '', $query->loan_amount));
dd($loan_amount);
另一种方式
在laravel
中格式化model attributes
的标准方法是accessors & mutators,请查看。
【讨论】:
以上是关于将较大的字符串值转换为数字 laravel。 (int) 给出错误的值的主要内容,如果未能解决你的问题,请参考以下文章