如何不使用each()重写合并订单重复项的PHP函数?
解决each()函数弃用问题,重写订单项合并代码
Hey there, 我来帮你搞定这个each()弃用的问题~PHP 7.2之后each()就被官方弃用了,咱们用更现代的foreach循环来替代就行,完全能保留原代码的所有功能。
重写后的完整代码
function mergeOrderItems($order) { $order_lean = array_count_values($order); $lean = array(); $str = ""; $first = 1; // 用foreach替代弃用的each()循环 foreach ($order_lean as $item => $count) { array_push($lean, "$count x $item"); if ($first) { $first = 0; } else { $str .= "\n"; } $str .= "$count x $item"; } return $str; }
关键改动说明
- 核心替换:把原来依赖
each()的while循环,换成了PHP推荐的foreach遍历方式。这里$item对应原代码里的$key(订单项的具体内容),$count对应原代码里的$val(该项的重复次数),逻辑完全匹配原代码。 - 保留所有原有逻辑:包括维护
$lean数组、控制首项不换行的$first标记,确保最终输出的字符串和原代码的结果完全一致。
小提示:原代码里的$lean数组在函数里没有被后续使用,如果你的业务场景不需要它,可以考虑删除这部分代码,精简实现~
内容的提问来源于stack exchange,提问作者Gimme the 411
相关产品推荐
相关产品推荐

