1

我希望有一种简单的方法可以做到这一点,而无需大量循环。

我有以下方式的矩阵:

    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

4 回答 4

1

使用max()函数:

foreach($arrayMonths as $month => $row)
{
    echo $month . ": " . max($row) . "<br />";
}
于 2012-04-27T06:26:45.050 回答
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 文档

如果您需要进一步进行排序,您可以在此处查看更多信息 PHP Array Sorting

于 2012-04-27T06:25:32.510 回答
0

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

于 2012-06-04T06:13:26.147 回答
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
?>

希望这可以帮助。

于 2012-04-27T06:54:21.823 回答