2015-12-21 3 views
-4

У меня есть мульти двумерный массив, созданный динамически, как один нижеВыберите максимальное значение в массиве

Array 
    ( 
[50] => Array 
    (
     [Paracetamol] => Array 
      (
       [name] => Paracetamol 
       [qty] => 10 

      ) 

     [count] => 2 
     [Loratidine] => Array 
      (
       [name] => Loratidine 
       [qty] => 15 

      ) 

    ) 

[51] => Array 
    (
     [Paracetamol] => Array 
      (
       [name] => Paracetamol 
       [qty] => 10 

      ) 

     [count] => 2 
     [Loratidine] => Array 
      (
       [name] => Loratidine 
       [qty] => 15 

      ) 

    ) 

[52] => Array 
    (
     [Paracetamol] => Array 
      (
       [name] => Paracetamol 
       [qty] => 10 

      ) 

     [count] => 1 
    ) 

)

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

Как мне это сделать?

+0

Означает ли это, что подсчет == сколько элементов в массиве т.е. парацетамол и лоратидин? – rharvey

+0

yes thats correct – user5349142

ответ

0
$max_count = 0; 
foreach ($array as $a) { 
    if ($a['count'] > $max_count) $max_count = $a['count']; 
} 
// if you want to copy the elements with count == max_count, leaving the original array alone 
$new_array = array(); 
foreach ($array as $a1) { 
    if ($a1['count'] == $max_count) { 
     $new_array[] = $a1; 
    } 
} 
// if you want to remove the elements with count < max_count from original array 
foreach ($array as $index => $a1) { 
    if ($a1['count'] < $max_count) { 
     unset($array[$index]); 
    } 
} 
0

Возможно, это поможет. Создайте такую ​​функцию:

function cmp($a, $b) { 
    if ($a == $b) return 0; 
    return ($a > $b) ? -1 : 1; 
} 

и затем вызвать следующий метод для упорядочивания массива на основе подсчета.

uasort($array['count'],'cmp'); 

В зависимости от того, $ а> $ Ь или $ а < $ б это может изменить количество или из возрастающем или убывающем порядке.

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

+0

, если есть несколько элементов с таким же самым высоким значением count, как бы я их выбрал? – user5349142

+0

См. Мой другой ответ – rharvey

0

Для выбора только индексных ключей элементов массива с наибольшим значением ключа «count» (в убывающем порядке):

$counts = []; 
array_walk($arr, function($v, $k) use (&$counts){ // $arr is your initial multidimensional array 
    $counts[$k] = $v['count']; 
}, $counts); 

arsort($counts); // Now the $counts is an array in which keys are real indexes from your initial array and values are the highest values of 'count' column in descending order 
Смежные вопросы