2012-04-27 84 views
1

我希望有一个简单的方法可以做到这一点没有吨和吨的循环。PHP阵列排序并从矩阵获取最大值

我有以下方式矩阵:

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

什么是我获得最大的每一行的最好方式: 一月= 5 二月= 15 擦伤= 7 的apr = 15

由于

回答

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

使用max()功能走得更远:

foreach($arrayMonths as $month => $row) 
{ 
    echo $month . ": " . max($row) . "<br />"; 
} 
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 
?> 

希望这会有所帮助。