微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

解决方法:

罗马的一种方式……

#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);

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

或者没有排序

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐