2013-02-18 2 views
1

Есть ли относительно простой способ найти наивысшие значения для каждого из ключей в моих ассоциативных массивах?Поиск наивысшего значения в ассоциативном массиве

Array(

    0 => Array(
     "avgtime" => 19.75, 
     "bounces" => 3, 
     "pageviews" => 14, 
     "visitors" => 4 
    ) 

    1 => Array(
     "avgtime" => 1.125, 
     "bounces" => 7, 
     "pageviews" => 9, 
     "visitors" => 8 
    ) 

    2 => Array(
     "avgtime" => 111, 
     "bounces" => 18, 
     "pageviews" => 32, 
     "visitors" => 20 
    ) 

    3 => Array(
     "avgtime" => 6.9375, 
     "bounces" => 14, 
     "pageviews" => 18, 
     "visitors" => 10 
    ) 

    4 => Array(
     "avgtime" => 191, 
     "bounces" => 11, 
     "pageviews" => 57, 
     "visitors" => 24 
    ) 
); 

Я хочу создать один массив, который содержит максимальное значение для каждой клавиши, поэтому конечным результатом будет.

Array(

    "avgtime" => 191, 
    "bounces" => 18, 
    "pageviews" => 57, 
    "visitors" => 24 
); 
+3

[Что вы пробовали?] (Http://www.whathaveyoutried.com/) См [спросить совет] (http://stackoverflow.com/questions/ask-advice), пожалуйста. Кроме того, это базовый PHP: используйте цикл. –

+0

Создайте переменную со значением 0 для каждой части массива, выполните цикл через массив, обновите значение, если значение больше значения переменной. – Lucas

+0

Вы можете отсортировать ассоциативный массив с помощью этого: http://php.net/manual/en/function.asort.php – danjp

ответ

3

перебрать массив и сохранять значения макс для каждого ключа

$temp = array(); 
foreach ($data as $item) { 
    foreach ($item as $key => $value) { 
     $temp[$key] = max(
       isset($temp[$key]) ? $temp[$key] : $value, 
       $value); 
    } 
} 
0
function maxRecursive(array $arr) { 
    $maxArray = array(); 
    array_walk_recursive($arr, function($val, $key) use(&$maxArray){ 
     if((!$maxArray[$key]) || $maxArray[$key] < $val){ 
      $maxArray[$key] = $val; 
     } 
    }); 
    return $maxArray; 
} 
Смежные вопросы