PHP中number_format格式化金额时传入Null参数的弃用警告问题
解决number_format()传入Null的弃用警告
问题详情
- 文件路径:
C:\xampp\htdocs\ksucatalog\application\helpers\nokencode_helper.php - 触发行号:118
- 警告信息:
number_format(): 向类型为float的参数#1($num)传入Null已被弃用
问题原因
你定义的money()函数直接将传入的$str参数传给number_format(),但PHP 8.0及以上版本提升了参数类型的严格性,当$str为null时,就会触发这个弃用警告——number_format()的第一个参数要求是float类型,不能传入null。
修复方案
方案1:提前处理null及非数值输入
修改money()函数,先把null转为0,同时确保输入是数值类型:
if (!function_exists('money')) { function money($str) { // 处理null、空值,默认转为0 $num = $str ?? 0; // 确保最终是float类型,非数值也转为0 $num = is_numeric($num) ? (float)$num : 0; return number_format($num, 2, '.', ','); } }
方案2:给参数设置默认值
直接给$str设置默认值0,从根源避免null传入:
if (!function_exists('money')) { // 参数默认值设为0,防止null传入 function money($str = 0) { $num = is_numeric($str) ? (float)$str : 0; return number_format($num, 2, '.', ','); } }
这两种方案都能解决警告问题,同时让money()函数能处理更多异常输入情况,稳定性更强。
内容的提问来源于stack exchange,提问作者rifky
相关产品推荐
相关产品推荐

