PHP数组排序并从矩阵中获取最大值

时间:2012-04-27 06:22:20

标签: php arrays sorting multidimensional-array

我希望有一个简单的方法可以做到这一点,没有吨和大量的循环。

我有以下方式的矩阵:

    Weight1 Weight2 Weight3 .... WeightN
Jan    1       3       5            4
Feb    10      12      15          11
Mar    5       7       4            3
Apr    10      15      7            3

假设有以下数组:

$arrayMonths = array(
       'jan' => array(1, 3, 5,4)
       'feb' => array(10,12,15,11)
       'mar' => array(5, 7, 4, 3)
       'apr' => array(10,15,7,3)
    );

我获得每行最大值的最佳方法是: jan = 5 feb = 15 mar = 7 apr = 15

谢谢

4 个答案:

答案 0 :(得分:1)

foreach ($arrayMonths as $month => $array) {
    // store the max of each month for later
    // $max['jan'] = 5
    $max[$month] = max($array);

    // or print it out
    echo $month. ' => '. max($array);
}

来自max() PHP Docs

如果您需要进一步分类,可以在这里查看更多信息 PHP Array Sorting

答案 1 :(得分:1)

使用max()功能:

foreach($arrayMonths as $month => $row)
{
    echo $month . ": " . max($row) . "<br />";
}

答案 2 :(得分:0)

试试这个:

<?php
function getMax( $v, $k ) {
    global $arrayMonths;

    $arrayMonths[ 'max' ][$k] = max($v);
}

$arrayMonths = array(
   'jan' => array(1, 3, 5,4),
   'feb' => array(10,12,15,11),
   'mar' => array(5, 7, 4, 3),
   'apr' => array(10,15,7,3)
);

array_walk( $arrayMonths, 'getMax' );

// Now $arrayMonths['max'] will contain all max values for each key
?>

希望这有帮助。

答案 3 :(得分:0)

我发现了一个完美的算法:基本上使用了一个遍历所有排列的递归函数。