2016-08-14 14 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

'数()'、すべてのサブアレイとは、単に ')(ビルトインPHP関数'分を使用し、 'を使用してarray_searchでキーを返します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', 
) 

。一度countを取得

2

反復は、その後、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 
関連する問題