CodeIgniter 3触发内存耗尽错误 自定义money_format函数运行无效应如何解决
问题根源
你遇到的内存耗尽错误是无限递归调用导致的,和CodeIgniter 3框架本身没有关联,问题完全出在你写的自定义money_format函数上:
- 你自定义的函数命名为
money_format,函数内部又直接调用了同名函数,触发了无限递归,程序反复进栈耗尽内存才会报这个错 - 除此之外你的函数还有多处语法错误:
- 第3行
%number =round((float)$num, $pro);是无效语法,PHP变量前缀应为$而非%,且这行定义的变量后续完全没有用到 - 函数结尾括号写反,错误写为
)},正确应为} - 你原本想调用的是PHP原生的
money_format函数,但因为你自定义了同名函数,程序会优先调用你写的这个自定义函数,永远碰不到原生函数
- 第3行
修复方案
直接修改自定义函数的名称,避免和PHP原生函数重名即可,修复后的代码参考:
function custom_money_format($num = 0, $pro = 2) { $num = round((float)$num, $pro); if($pro == 2) { $num = money_format("%!^2n", (float)$num); } else { $num = money_format("%=*!^.".$pro."n", (float)$num); } return $num; }
注意:PHP原生
money_format函数在PHP 7.4版本后已被废弃,如果你后续升级PHP版本,建议替换为NumberFormatter类实现金额格式化功能
内容的提问来源于stack exchange,提问作者Siddharthsonii
相关产品推荐
相关产品推荐

