前端传参 位置(不是id)
起始位置:oldIndex
结束位置:newIndex
/**
* 根据起始位置结束位置实现拖拽排序
* @param $list 原始需要排序的数组数据
* @param $oldIndex 排序数据原始位置
* @param $newIndex 排序数据新的位置
* @return array
*/
public function Sorts($list,$oldIndex,$newIndex): array
{
//数据库数据
$idArr = [];
$sortArr = [];
foreach ($list as $item) {
$idArr[] = $item['id'];
$sortArr[] = $item['order'];
}
//记录要拖动的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]['order'] = $sortArr[$i];
}
//返回排序后的数据
return $set;
}