检查数组中的元素是否为偶数,并按特定顺序对它们进行排序

时间:2017-11-15 15:52:59

标签: arrays

我一直试图解决这个问题,但我似乎无法找到一个很好的方法来做到这一点,所以基本上我想要实现的是以数字排序的方式排序数组,例如像这样:

Array output (unsorted)
7777777777
7777777777
6666666666
6666666666
2222222222

Array output (sorted)
7777777777
6666666666
2222222222
6666666666
7777777777

我正在考虑制作一个数组NxN并对其进行排序,如果有像sevens和sixes这样的2个数组元素,它会将它们排序为

7
6
6
7

和所有奇数一样,例如在这个例子中,它会像

那样对它们进行排序
7
6
2
6
7

1 个答案:

答案 0 :(得分:0)

计算数组中的值。

$values = array_count_values($array);

(如果您希望将更大的偶数值组分类到结果数组的对称部分的内部或外部,则可以asort($values);arsort($values);。或者,如果您没有&#39小心,不要。)

根据这些数量构建平均数和赔率。

foreach ($values as $value => $count) {
    if ($count % 2) {
        while ($count--) $odds[] = $value;
    } else {
        $count /= 2;  // half the size, so half can go at the beginning and half at the end
        while ($count--) $evens[] = $value;
    }
}

将偶数和奇数数组合并在一起以创建结果。

$result = array_merge($evens, $odds, array_reverse($evens));