停止为 PHP 提供错误 number_format
Stop giving error number_format for PHP
这里是问题:
$var = 1000;
$var2 = number_format($var,2);// No error
和;
$var = 'Some String';
$var2 = number_format($var,2);// Gives 'number_format() expects parameter 1 to be double.... error'
我的处理方案是;
$var = 'Some String';
$var_escape = 1000;
if(!$var2 = number_format($var,2)){
$var2 = $var_escape;// if $var not a integer; always give 1000 to $var2.
}
此解决方案运行良好,但是;仍然给出“期望参数错误”;因为这一行:
if(!$var2 = number_format($var,2)){
我不想使用“@”抑制。这个问题还有其他解决方案吗?谢谢...
我的灵感来自答案解决方案
if(!is_numeric($var2 = $var)){$var2 = $var_escape;}
谢谢大家...
您可以使用 is_numeric 函数
检查您的输入是否为数字
$var = 'Some String';
$var_escape = 1000;
if(is_numeric($var))
$var2=number_format($var,2);
else
$var2=$var_escape;
您可以简单地使用默认值预先声明 $var2
,然后使用 is_numeric()
中的内置函数检查以确保 $var
的传入值是数字=20=]。如果 $var
的传入值确实是数字,则将该数值赋给 $var2
,否则 $var2
将保留为默认值 1000
。
$var2 = 1000;
if(is_numeric($var)){
$var2 = number_format($var,2);
}
// You can proceed to use $var2 here as it will be 1000 or the value from $var if it was numeric.
使用正则表达式将是最简单的,这将验证它是整数还是浮点数。
code
$vars = array(
'Some String',
123,
123.5,
-11,
"123.55",
"!!",
.1,
1,
".1",
"1"
);
foreach($vars as $var) {
if(0 !== preg_match('/^-?\d*\.?\d*$/', $var)) {
echo number_format($var, 2) . PHP_EOL;
} else {
echo $var . " -> " . 1000 . PHP_EOL;
}
}
output
Some String -> 1000
123.00
123.50
-11.55
123.55
!! -> 1000
0.10
1.00
0.10
1.00
小心...Demo
使用:
if(is_float($var) || is_integer($var)){
而不是:
if(is_numeric($var)){
除非您希望您的数字字符串也被处理。
这里是问题:
$var = 1000;
$var2 = number_format($var,2);// No error
和;
$var = 'Some String';
$var2 = number_format($var,2);// Gives 'number_format() expects parameter 1 to be double.... error'
我的处理方案是;
$var = 'Some String';
$var_escape = 1000;
if(!$var2 = number_format($var,2)){
$var2 = $var_escape;// if $var not a integer; always give 1000 to $var2.
}
此解决方案运行良好,但是;仍然给出“期望参数错误”;因为这一行:
if(!$var2 = number_format($var,2)){
我不想使用“@”抑制。这个问题还有其他解决方案吗?谢谢...
我的灵感来自答案解决方案
if(!is_numeric($var2 = $var)){$var2 = $var_escape;}
谢谢大家...
您可以使用 is_numeric 函数
检查您的输入是否为数字$var = 'Some String';
$var_escape = 1000;
if(is_numeric($var))
$var2=number_format($var,2);
else
$var2=$var_escape;
您可以简单地使用默认值预先声明 $var2
,然后使用 is_numeric()
中的内置函数检查以确保 $var
的传入值是数字=20=]。如果 $var
的传入值确实是数字,则将该数值赋给 $var2
,否则 $var2
将保留为默认值 1000
。
$var2 = 1000;
if(is_numeric($var)){
$var2 = number_format($var,2);
}
// You can proceed to use $var2 here as it will be 1000 or the value from $var if it was numeric.
使用正则表达式将是最简单的,这将验证它是整数还是浮点数。
code
$vars = array(
'Some String',
123,
123.5,
-11,
"123.55",
"!!",
.1,
1,
".1",
"1"
);
foreach($vars as $var) {
if(0 !== preg_match('/^-?\d*\.?\d*$/', $var)) {
echo number_format($var, 2) . PHP_EOL;
} else {
echo $var . " -> " . 1000 . PHP_EOL;
}
}
output
Some String -> 1000
123.00
123.50
-11.55
123.55
!! -> 1000
0.10
1.00
0.10
1.00
小心...Demo
使用:
if(is_float($var) || is_integer($var)){
而不是:
if(is_numeric($var)){
除非您希望您的数字字符串也被处理。