按照php中另一个数组的值的顺序对数组进行排序

Mat*_*eil 3 php arrays sorting

是否有更好的方法按$ tabdocids值的顺序对$ datas数组进行排序?

foreach ( $tabdocids as $ordered_id ) {
            foreach ( $datas as $doc )
                if ($doc->docid == $ordered_id)
                    $ordered [] = $doc;
}
$datas=$ordered;
Run Code Online (Sandbox Code Playgroud)

Jus*_*ons 5

罗马的一种方式......

#for collect
$ordered = array_flip($tabdocids);//too keep the order from the $tabdocids
array_map(function ($doc) use ($tabdocids,&$ordered){ 
      if(in_array($doc->docid,$tabdocids)){ $ordered [$doc->docid] = $doc; } 
},$datas);
$datas=array_values($ordered);
Run Code Online (Sandbox Code Playgroud)

[@Kris Roofe评论后更新]现在它将被排序.

或者没有排序

$datas = array_filter($datas,function ($doc) use ($tabdocids){ 
      return (bool)in_array($doc->docid,$tabdocids);
});
Run Code Online (Sandbox Code Playgroud)