2016-08-14 2 views
-1

포함하고있는 값의 수에 따라 어느 배열이 가장 크고 작은 지 알아 내고 싶습니다. 예를 들어최대 및 최소 요소 수를 가진 배열 찾기

:

$array=[ 
"subarray1"=>[1] 
"subarray2"=>[1,2,3,4,5,6,7,8] 
"subarray3"=>[1,2,3,4] 
]; 

max_elements ($ 배열) 반환 subarray2min_elements ($ 배열) 반환 subarray1

합니까 PHP는 배열을 선택할 수있는 기능을 가지고 있습니다 가장 많은 수의 요소와 최소 수의 요소를 가진 배열?

+0

max를 사용하여 키를 돌려 받고'수()'모든 하위 어레이와 단순히') (내장 PHP 함수'분을 사용'와 max()'. – Rizier123

+0

min_elements()가 키 또는 배열을 반환해야합니까? – Progrock

답변

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)); 

출력 : @ Rizier123의 의견에 의해 영감을

array (
    0 => 'subarray1', 
    1 => 'subarray4', 
) 

.

2

으로 반복 한 번 count은 다음 array_searchmin 또는

<?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