Laravel数组按size_piece键从小到大排序求助
解决size_piece按尺寸键从小到大排序的问题
要实现按size_piece的键(尺寸)从小到大排序,你只需要在生成完$cut_order数组后,添加一段遍历排序的代码即可,具体修改如下:
foreach ($cco as $order_item){ foreach ($order_item->orderPiece as $piece_item){ $order_piece += $piece_item->piece; $cut_order['cutting_piece'][$order_item->collectionColor->color_name]['size_piece'][$piece_item->CollectionColorSizeBarcode->size] = $piece_item->piece; $cut_order['cutting_piece'][$order_item->collectionColor->color_name]['total_piece'] += $piece_item->piece; } $cut_order['order'][$order_item->id] = $order_item; $cut_order['order'][$order_item->id]['total_piece'] = $order_piece; $order_piece = 0; } // 新增:对每个颜色分组下的size_piece按尺寸键升序排序 foreach ($cut_order['cutting_piece'] as &$color_group) { ksort($color_group['size_piece']); } unset($color_group); // 释放引用,避免后续代码意外修改原数组 return dd($cut_order);
说明:
ksort()是PHP内置函数,会直接对数组的键进行升序自然排序,刚好匹配你按尺寸从小到大排列的需求(不管是数字尺寸还是XS/S/M/L这类字符串尺寸,常规顺序都能正确排序)。- 使用
&$color_group引用是为了直接修改$cut_order数组里的原数据,排序完成后记得用unset($color_group)释放引用,防止后续代码操作时意外修改数组内容。
内容的提问来源于stack exchange,提问作者onur
相关产品推荐
相关产品推荐

