1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $testArr = [ ['id'=>1,'msg'=>'aaa'], ['id'=>2,'msg'=>'bbb'], ['id'=>3,'msg'=>'ccc'], ['id'=>4,'msg'=>'ddd'], ]; $roler = [2,1,3,4]; usort($testArr,function($a,$b) use($roler){ return (array_search($a['id'], $roler) < array_search($b['id'], $roler)) ? -1 : 1; }); var_dump($testArr); die(); 输出结果:反正成功了 还有就是 第一层要是索引数组