美文网首页
php拖拽移动算法,php接口实现拖拽排序功能

php拖拽移动算法,php接口实现拖拽排序功能

作者: 响呼雷 | 来源:发表于2023-02-28 13:31 被阅读0次
    接口设计:
    //$ids 这十条数据的id集合,逗号隔开的字符串
    //$oldIndex 原始位置,从0开始算
    //$newIndex 要拖动的位置
    function dragSort($ids,$oldIndex,$newIndex)
    {
    //保证查找出来的数据跟前台提交的顺序一致,这里要order by field
    //id 主键 sort 排序值
    $sql = "select id,sort from 表名字 where id in ($ids) order by field(id, " . $ids . ") ";
    $list = "这里省略,就是去数据库找嘛";
    //id集合
    $idArr = [];
    //排序集合
    $sortArr = [];
    foreach ($list as $item) {
      $idArr[] = $item['id'];
      $sortArr[] = $item['sort'];
    }
    //记录要拖动的id
    $oldValue = $idArr[$oldIndex];
    //删除这个要拖动的id
    unset($idArr[$oldIndex]);
    //插入新的位置,并自动移位
    array_splice($idArr, $newIndex, 0, $oldValue);
    //重新设置排序
    $set = [];
    for ($i = 0; $i < count($idArr); $i++) {
      $set[$i]['id'] = $idArr[$i];
      $set[$i]['sort'] = $sortArr[$i];
    }
    //保存到数据库省略
    }
    
            示例
           //id集合
           $idArr = [1,2,3,4,5,6];
            //排序集合
            $sortArr = [1,2,3,4,5,6];
            //记录要拖动的id
            $oldValue = $idArr[$oldindex];
            //删除这个要拖动的id
            unset($idArr[$oldindex]);
            //插入新的位置,并自动移位
            array_splice($idArr, $newindex, 0, $oldValue);
            //重新设置排序
            $set = [];
            for ($i = 0; $i < count($idArr); $i++) {
                $set[$i]['id'] = $idArr[$i];
                $set[$i]['sort'] = $sortArr[$i];
            }
            dd($set);
    
    image.png

    相关文章

      网友评论

          本文标题:php拖拽移动算法,php接口实现拖拽排序功能

          本文链接:https://www.haomeiwen.com/subject/xydlldtx.html