2012-04-27 120 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 
?> 

希望這會有所幫助。