You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何将首个/选中的订单移至列表末尾?

解决指定订单移至列表底部的问题

你的代码里用unset($order_items[$key])会直接移除原位置的元素,虽然之后又把元素加回去,但数组索引会变得不连续,而且手动计算最后索引的逻辑容易出错。下面是优化后的写法,既能保留元素又能正确移到末尾:

按指定order_id移动订单到末尾

if (isset($request['defer_order']) && $request['defer_order'] !== null) {
    $order_id = $request['defer_order'];
    
    foreach ($order_items as $key => $order_item) {
        if ($order_item->order_id == $order_id) {
            // 先保存目标订单
            $target_order = $order_item;
            // 删除原位置的元素
            unset($order_items[$key]);
            // 重置数组索引(可选,需要连续数字索引时用)
            $order_items = array_values($order_items);
            // 把目标订单追加到数组最后
            $order_items[] = $target_order;
            // 找到后直接跳出循环,不用继续遍历
            break;
        }
    }
}

如果是固定把首个订单移到底部

如果你的需求是不管order_id,直接把第一个订单移到末尾,代码可以更简单:

if (!empty($order_items)) {
    // 取出第一个元素并删除原位置
    $first_order = array_shift($order_items);
    // 追加到数组末尾
    $order_items[] = $first_order;
}

关键说明

  • 避免在循环里动态计算数组长度,unset后数组长度会变化,手动算索引容易出错
  • 用$order_items[] = $元素是PHP里追加元素到数组末尾最可靠的方式
  • 找到目标后break循环,减少不必要的遍历

内容的提问来源于stack exchange,提问作者Muhammad Bilal Tariq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 01:31:00