2011-12-17 9 views
0

配列内の最大値を検索する関数を作成しています。しかし、私はこの例を持っていると言う、配列内と配列外の両方の最大値が指定されています

function MaxArray($arr) 
{ 
    return max($arr); 
} 
$arr = array(array(141,151,161), 2, 3, array(101, 202, array(303,404))); 
print_r(MaxArray($arr)); 

これは、アレイ内の最高値であるので、私は、出力のためにしたいことは404を取得することで値Array ([0] => 141 [1] => 151 [2] => 161)

を返します。どんな洞察?ありがとう。あなたの関数

function MaxInArray ($arr) { 
    $m = NULL; 
    foreach ($arr as $v) { 
     if (is_array($v)) $v = MaxInArray($v); 
     if (is_null($m) || $v > $m) $m = $v; 
    } 
    return $m; 
} 

の変更は、それが再帰作ったとして

+1

は、最初の配列を平らたとえばanonymous functionDocsこれはいくつかの小さなコードで解決することができると組み合わせます。 –

答えて

0

PHPには、配列を平坦化または再帰的に歩くための多くの機能が組み込まれています。 array_walk_recursiveDocs

array_walk_recursive($arr, function($v) use(&$max) {$max = max($v, $max);}); 

var_dump($max); # int(404) 

Demo

関連する問題