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

接口设计:
//$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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容