2012-11-29 193 views
0

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

I.E.

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) 

感谢

+0

我在结果示例中看不到任何排序算法。你能指出它吗? –

+0

我认为最大,最小,次最大,最小最小等等。 –

+0

那么问题是什么?首先对数组进行升序或降序排序,然后对其进行迭代,然后以任意顺序构建输出数组。 – arkascha

回答

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); 
+0

不错!谢谢! – ojsglobal