Fork me on GitHub

一个因number_format引起的bug


奥巴马55岁就退休,川普70岁才开始当总统。

number_format() 函数格式化以后的数字不再是数字, 而是字符串
1
2
3
$num = 12.5345;
$format = number_format($num, 2);
dd(is_string($format)); // true

所以字符串0.00并不是false

1
2
3
$num = 0;
$format = number_format($num, 2);
dd(empty($format)); // false

数字0.00 才是false

1
dd(empty(0.00));  // true

还有一个字符串0是false

1
dump(empty('0'));  // true

而字符串0.0确是true

1
dump(empty('0.0'));  // false

字符串强制转化成数字

1
2
3
$num = 12.45;
$format = number_format($num, 2);
dd(floatval($format));

请我喝一个苹果味的美年达吧,谢谢!