如何将关联数组排序为替代最大的最小顺序?

时间:2012-11-29 11:35:07

标签: php arrays

有谁知道如何将关联数组排序为交替最大的最小值?

array("A"=>10, "B"=>2, "C"=>5, "D"=>1, "E"=>30, "F"=>1, "G"=>7)

应该成为:

array("E"=>30, "D"=>1, "A"=>10, "F"=>1, "G"=>7, "B"=>2, "C"=>5)

由于

1 个答案:

答案 0 :(得分:2)

根据您之前版本的问题的答案:

$myArray = array("A"=>10, "B"=>2, "C"=>5, "D"=>1, "E"=>30, "F"=>1, "G"=>7);
asort($myArray);
$myArrayKeys = array_keys($myArray);

$newArray = array();
while (!empty($myArray)) {
    $newArray[array_shift($myArrayKeys)] = array_shift($myArray);
    if (!empty($myArray))
        $newArray[array_pop($myArrayKeys)] = array_pop($myArray);
}
var_dump($newArray);

或者,如果你想要最大的第一个:

$myArray = array("A"=>10, "B"=>2, "C"=>5, "D"=>1, "E"=>30, "F"=>1, "G"=>7);
asort($myArray);
$myArrayKeys = array_keys($myArray);

$newArray = array();
while (!empty($myArray)) {
    $newArray[array_pop($myArrayKeys)] = array_pop($myArray);
    if (!empty($myArray))
        $newArray[array_shift($myArrayKeys)] = array_shift($myArray);
}
var_dump($newArray);