我想在Codeigniter中创建自己的数字格式化帮助器。但是当我调用我的函数时,它显示错误:
严重程度:通知
消息:遇到未正确形成的数值
这是我的助手功能:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
if ( ! function_exists('test_method'))
{
function test_method($var = '')
{
return number_format( (float) $var, 0, ',', '.');
}
}
当我在视图中执行时:
<?php echo test_method($price) ?>
我收到了上述通知。如何解决?
答案 0 :(得分:2)
PHP&#39; number_format()
接受numeric输入。确保$price
是数字。
if ( ! function_exists('test_method'))
{
function test_method($var)
{
if (is_numeric($var)) {
return number_format($var);
}
// Invalid input, do something about it.
throw new \Exception("Invalid number to format: $var");
}
}
$var
的默认值不是一个很好的选择:
>>> number_format('')
PHP warning: number_format() expects parameter 1 to be float, string given on line 1
$price
已经格式化了。显然,问题是逗号:
>>> number_format("524,800")
PHP error: A non well formed numeric value encountered on line 1
当您使用分隔符保存价格(似乎已经格式化)时,首先需要在数字格式化之前删除它们:
if ( ! function_exists('test_method'))
{
function test_method($var)
{
// Prep
$var = str_replace(',', '', $var);
if (is_numeric($var)) {
return number_format($var);
}
// Invalid input, do something about it.
throw new \Exception("Invalid number to format: $var");
}
}
三思而后行将价格保存为格式化字符串并不是一个好习惯。或者如果那不是你的情况,那么你的数据会在它到达你的助手之前的其他地方被格式化。无论哪种方式,你需要修复它。