我想根据它包含的值的数量找出哪个数组最大和最小。
例如:
$array=[
"subarray1"=>[1]
"subarray2"=>[1,2,3,4,5,6,7,8]
"subarray3"=>[1,2,3,4]
];
max_elements($ array)返回 subarray2 和 min_elements($ array)返回 subarray1
PHP是否有任何函数可以选择包含大量元素的数组和数量最少的数组?
答案 0 :(得分:2)
获取count
后迭代,然后使用array_search
或min
max
的密钥
<?php
function extreme_elements($arr, $min_max){
foreach ($arr as $key => $val)
$arr[$key] = count($val);
return array_search($min_max($arr),$arr);
}
// friendly named wrappers
function max_elements($arr){
return extreme_elements($arr, 'max');
}
function min_elements($arr){
return extreme_elements($arr, 'min');
}
$array=[
"subarray1"=>[1],
"subarray2"=>[1,2,3,4,5,6,7,8],
"subarray3"=>[1,2,3,4]
];
echo max_elements($array); // subarray2
echo min_elements($array); // subarray1
答案 1 :(得分:1)
查找包含最少成员的子数组的键的示例:
<?php
$array=[
'subarray1'=>[1],
'subarray2'=>[1,2,3,4,5,6,7,8],
'subarray3'=>[1,2,3,4],
'subarray4'=>[3],
];
$counted = array_map('count', $array);
$min_member_count = min($counted);
$mins = array_filter($counted, function($item) use ($min_member_count) {
if($min_member_count == $item) return true;
});
var_export(array_keys($mins));
输出:
array (
0 => 'subarray1',
1 => 'subarray4',
)
受@ Rizier123的评论启发。