在 PHP 中对两个数组进行排序
Sort two arrays by another in PHP
我有two data arrays
,每个都有相同数量的元素。还有一个 sorting
数组,第一个数组中的值为 unique elements
。
数据数组可以有任意数量的元素,但每个元素的数量完全相同。
我希望两个数据数组都按排序数组排序。
示例:
array1(‘group1’,’group1’,’group3’,’group1’,’group2’); (5 elements)
array2(‘data1’,’data3’,’data2’,’data4’,’data5’); (5 elements)
sortArray(‘group2’,’group1’,’group3’);(3 elements, no particular order, one each from array1)
结果将是:
array(‘group2’,’group1’,’group1’,’group1’,’group3’);
array(‘data5’,’data1’,’data3’,’data4’,’data2’);
我试图让这个与 array_multisort
一起工作,但解决方案正在逃避我。
感谢您的任何见解!
您可以使用简单的 foreach
循环来做到这一点。
$arr1 = array(1,1,3,1,2);
$arr2 = array(1,3,2,4,5);
$sortArr= array(2,1,3);
$new_arr1 = array();
$new_arr2 = array();
foreach($sortArr as $s){
foreach($arr1 as $key => $value){
if($s==$value){
array_push($new_arr1, $value);
array_push($new_arr2, $arr2[$key]);
}
}
}
$new_arr1
和 $new_arr2
是结果数组。
创建对应于 array1 的临时数组,其中为 array1 的每个元素设置它在 array2 中的索引。并一次对所有数组进行排序
$array1 = array('group1','group1','group3','group1','group2');
$array2 = array('data1','data3','data2','data4','data5');
$sortArray = array('group2','group1','group3');
$flip = array_flip($sortArray);
$sort = [];
foreach($array1 as $x) {
$sort[] = $flip[$x]; // [1,1,2,1,0]
}
array_multisort($sort, $array1, $array2);
print_r($array1);
print_r($array2);
我有two data arrays
,每个都有相同数量的元素。还有一个 sorting
数组,第一个数组中的值为 unique elements
。
数据数组可以有任意数量的元素,但每个元素的数量完全相同。
我希望两个数据数组都按排序数组排序。
示例:
array1(‘group1’,’group1’,’group3’,’group1’,’group2’); (5 elements)
array2(‘data1’,’data3’,’data2’,’data4’,’data5’); (5 elements)
sortArray(‘group2’,’group1’,’group3’);(3 elements, no particular order, one each from array1)
结果将是:
array(‘group2’,’group1’,’group1’,’group1’,’group3’);
array(‘data5’,’data1’,’data3’,’data4’,’data2’);
我试图让这个与 array_multisort
一起工作,但解决方案正在逃避我。
感谢您的任何见解!
您可以使用简单的 foreach
循环来做到这一点。
$arr1 = array(1,1,3,1,2);
$arr2 = array(1,3,2,4,5);
$sortArr= array(2,1,3);
$new_arr1 = array();
$new_arr2 = array();
foreach($sortArr as $s){
foreach($arr1 as $key => $value){
if($s==$value){
array_push($new_arr1, $value);
array_push($new_arr2, $arr2[$key]);
}
}
}
$new_arr1
和 $new_arr2
是结果数组。
创建对应于 array1 的临时数组,其中为 array1 的每个元素设置它在 array2 中的索引。并一次对所有数组进行排序
$array1 = array('group1','group1','group3','group1','group2');
$array2 = array('data1','data3','data2','data4','data5');
$sortArray = array('group2','group1','group3');
$flip = array_flip($sortArray);
$sort = [];
foreach($array1 as $x) {
$sort[] = $flip[$x]; // [1,1,2,1,0]
}
array_multisort($sort, $array1, $array2);
print_r($array1);
print_r($array2);