我有一个数组如下:
$aq=['jonathan','paul','andy','rachel'];
然后我有一个数组如下:
$bq=['rachel','andy','jonathan'];
我需要的是使用第一个数组的顺序来排序我的第二个数组。
因此,对于此实例,生成的排序数组应为:
$cq=['jonathan','andy','rachel'];
我开始研究一个使用最高键作为最高值(数组的头部)的解决方案,因为我正在寻找的是最高值,但是遇到了问题,看起来更像是一个黑客,所以我认为排序是我正在寻找什么。
php中是否有一个简单的函数可以根据我的第一个数组对数据进行排序,并且数组中各自的位置
答案 0 :(得分:2)
请使用array_intersect
$aq = ['jonathan','paul','andy','rachel'];
$bq = ['rachel','andy','jonathan'];
$cq = array_intersect($aq, $bq);
var_export($cq);
输出将是:
array ( 0 => 'jonathan', 2 => 'andy', 3 => 'rachel', )
答案 1 :(得分:0)
您必须使用自定义排序功能。在这里,我们获取“排序”数组中相应条目的键,并使用它们来排序工作数组。
在这个例子中,如果排序数组中不存在键,我们放弃(返回0);您可能希望自定义该行为,但这应该为您提供一般性的想法。
$order = ['jonathan','paul','andy','rachel'];
$arrayToSort =['rachel','andy','jonathan'];
usort($arrayToSort,function($a,$b) use ($order){
if( ! array_key_exists($a,$order) ) return 0;
if( ! array_key_exists($b,$order) ) return 0;
if( array_search($a,$order) > array_search($b,$order)
return 1;
return -1;
});