php處理拖拽排序後臺程式
阿新 • • 發佈:2018-12-12
前端傳遞 位置(不是id)
初始位置:oldIndex
結束位置:newIndex
<?php /** * @author liaosp.top * Time: ${Date} -11:27 * version 1.0 */ //$a1=array(10=>0,11=>1,12=>2,13=>3,14=>4); // //$oldValue = $a1[1]; //unset($a1[1]); //array_splice($a1,0,0,$oldValue); //print_r($a1); function Sorts($oldIndex,$newIndex) { //資料庫資料 $list = [ ['id'=>1,'sort'=>1], ['id'=>2,'sort'=>2], ['id'=>3,'sort'=>3], ]; $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]; } //儲存到資料庫省略 var_dump($set); }
使用方法:
//從第一個位置移動到第二個位置
Sorts(0,1);
結果:
array(3) { [0]=> array(2) { ["id"]=> int(2) ["sort"]=> int(1) } [1]=> array(2) { ["id"]=> int(1) ["sort"]=> int(2) } [2]=> array(2) { ["id"]=> int(3) ["sort"]=> int(3) } }