一个因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));