选择数组中的最大值


Select max value in array

我有一个动态创建的多维数组,就像下面的数组一样

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
    )

)

我想为计数值最高的项目选择索引值。计数是子数组中除计数本身之外的元素数量的度量。

我该怎么走?

$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]);
    }
}

也许这会有所帮助。创建这样的函数:

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

然后调用以下方法,根据计数对数组进行排序。

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

取决于$a>$b还是$a<b这可以从升序或降序更改计数。

因此,数组中的第一项将具有最高计数值。

仅选择'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