2011-05-17 53 views
1

如何从15.00密钥中挑选最高点的数组?对具有最高点的数组进行排序?

我有一个数组是这样的:

Array 
(

    [9] => Array 
     (
      [15.00] => 3.0 
      [20.00] => 8.0 
      [25.00] => 10.5 
     ) 

    [2] => Array 
     (
      [15.00] => 2.0 
      [20.00] => 5.0 
      [25.00] => 2.5 
     ) 


    [4] => Array 
     (
      [15.00] => 6.0 
      [25.00] => 4.0 
      [30.00] => 6.0 
     ) 
) 

为了它应该是:4,9和2

+0

@ user622378 - 本页评论中有很多多维排序函数http://php.net/manual/en/function.sort.php – Rob 2011-05-17 14:21:46

回答

2

PHP有usort,功能允许您通过用户提供的比较函数进行排序。还有维持索引关联的uasort

下面是一个例子:

<?php 
$array = Array(
    9 => Array(
      15.00 => 3.0, 
      20.00 => 8.0, 
      25.00 => 10.5 
), 
    2 => Array(
      15.00 => 2.0, 
      20.00 => 5.0, 
      25.00 => 2.5 
), 
    4 => Array(
      15.00 => 6.0, 
      25.00 => 4.0, 
      30.00 => 6.0 
) 
); 

function my_func($a, $b) { 
    if ($a[15.00] == $b[15.00]) 
     return 0; 
    return ($a[15.00] < $b[15.00]) ? 1 : -1; // backwards sorting 
} 

uasort($array, my_func); 
var_dump($array); 
?> 

而且here's it working

希望这会有所帮助。

2

如果我正确理解你的问题,我个人可能使用usort()。在我的回调中,我会比较$a[15.00]$b[15.00]

-1
<? 
for ($i=1;$i<=count($arr);$i++) 
for ($j=$i+1;$j<=count($arr) - 1;$j++) 
if ($arr[$i]['15.00'] > $arr[$j]['15.00']) { 
    $tmp = $arr[$i]; 
    $arr[$i] = $arr[$j]; 
    $arr[$j] = $tmp 
} 
?> 
2

你想uasort():

function cmp($a, $b) { 
    if ($a[15.00] < $b[15.00]) return 1; 
    if ($a[15.00] > $b[15.00]) return -1; 
    return 0; 
} 

uasort($data, "cmp");