我有一个动态创建的多维数组,就像下面的数组一样
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