假设我按照他们的分数排序男性名单,并按照他们的分数排序(从最高到最低)。 现在我想要一个列表:
Highest score male, Highest score female, 2nd score male, 2nd score female, 3rd score male, 3rd score female, etc...
(注意,如果最高分女性低于第二分数男性,则不重要。)
我怎么能用PHP做到这一点?
按要求更新:
名为$arr_sort[$score][$gender]
输入数组1:
$arr_sort[20][male],$arr_sort[18][male],$arr_sort[17][male],$arr_sort[10][male],$arr_sort[9][male],$arr_sort[5][male],$arr_sort[1][male]
输入数组2:
$arr_sort[15][female],$arr_sort[14][female],$arr_sort[13][female]
预期结果:
$arr_sort[20][male],$arr_sort[15][female],$arr_sort[18][male],$arr_sort[14][female],$arr_sort[17][male],$arr_sort[13][female],$arr_sort[10][male],$arr_sort[9][male],$arr_sort[5][male],$arr_sort[1][male]
不同的尺寸并不重要,只是混合到每个尺寸的任何长度,(简而言之,我们需要得到一个结果,这样如果我们从结果中删除"男性"数组将得到原始的"女性"阵列,反之亦然。)
答案 0 :(得分:0)
输入数组已经排序
如果你知道如何遍历其中一个,你知道如何迭代 通过另一个数组也是如此。迭代两者(交替)。
伪代码:
Iterator m = new Iterator(array1);
Iterator f = new Iterator(array2);
List array3 = [];
while (m.hasNext() || f.hasNext() ) {
if (male.hasNext())
array3.add( m.next() );
if (f.hasNext())
array3.add( f.next() );
}
(编辑)php示例:
$array3 = [];
$mkeys = array_keys($array1);
$fkeys = array_keys($array2);
$nm = count($mkeys);
$nf = count($fkeys);
for ($i=0; ($i<$nm)||($i<$nf); ++$i) {
if ($i<$nm) {
//$array3[] = array($mkeys[$i], $array1[$mkeys[$i]]);
$array3[$mkeys[$i]] = $array1[$mkeys[$i]];
}
if ($i<$nf) {
//$array3[] = array($fkeys[$i], $array2[$fkeys[$i]]);
$array3[$fkeys[$i]] = $array2[$fkeys[$i]];
}
}
php代码正在做的是获取键和值,然后将其添加到关联数组,无论该键和值是什么。
由于数组已经排序,所需要做的就是根据问题中的规范交替将其元素添加到合并数组
请注意,事件[sic]如果最高分女性低于第二分数男性,则不重要