2016-03-24 19 views
4

は私の配列です:以下はPHPの配列の最大値を探す

Array 
(
    [3] => Array 
     (
      [2] => 3 
      [4] => 1 
      [5] => 2 
      [6] => 2 
     ) 

    [5] => Array 
     (
      [2] => 1 
      [3] => 2 
      [4] => 3 
      [6] => 3 
     ) 

この配列では、私は最大数を見つけたいと配列が同じ最大値が含まれている場合、我々は、ランダムに1つの最大値を選択してください。以下のような

予想される出力:

Array 
(
    [3] => Array 
     (
      [2] => 3 

     ) 

    [5] => Array 
     (

      [4] => 3 

     ) 

    [6] => Array 
     (
      [2] => 3 

     ) 

) 

これは私が試したものです:あなたがmax()で最大値を取得します

$found = Array([3] => Array ([2] => 3 [4] => 1 [5] => 2 [6] => 2) [5] => Array ([2] => 1 [3] => 2 [4] => 3 [6] => 3) [6] => Array ([2] => 3 [3] => 2 [4] => 2 [5] => 3)) 
$fmaxnum = array(); 

foreach($found as $fk => $fv){ 
    $fmaxnum[$fk] = max($fv); 
} 
echo "<pre>";print_r($fmaxnum);echo "</pre>" 
+0

[私は使いちょうどこれをここに残すつもりだ](http://php.net/manual/en/function.max。PHP) – Ohgodwhy

+0

$見出さ=アレイ ( [3] =>配列 ( [2] => 3 [4] => 1 [5] => 2 [6] => 2 ) [5] =>配列 ( [2] => 1 [3] => 2 [4] => 3 [6] => 3 ) [6] =>配列 ( [ 2] => 3 [3] => 2 [4] => 2 [5] => 3 ) )$ fmaxnum = array(); \t \t \t foreachの($が$として見出さFK => $ FV){ \t \t \t \t \t $ fmaxnum [$ FK] = MAX($ FV)。 \t \t \t \t \t \t \t \t \t} \t \t \t} \t \t \tエコー "

";print_r($fmaxnum);echo "
"。 – shan

+0

私は上記のようなコードを書いています – shan

答えて

0

あなただけの最高値を知りたい場合、私はこの配列では

を理解してI最大数を探したい場合、配列 に同じ最大値が含まれている場合、最大値を1つ選択します がランダムに表示されます。

あなただけの、この

$array = [['3','1','2','2'],['1','2','3','3'],['2','1','1','3']]; 
$result = []; 

foreach(new RecursiveIteratorIterator(new RecursiveArrayIterator($array)) as $value) { 
    $result[] = $value; 
} 

echo max($result); 

が、これはすべての配列をforeachのと$resultに値をプッシュします行うことができ、その後、あなただけの1つのレベルの配列を持っており、簡単にmax機能

3

が、インデックスのためにあなたがarray_keys()

を使用する必要がありますこれを試すことができます:

$found = Array ('3' => Array ('2' => 3 ,'4' => 1, '5' => 2, '6' => 2), 
       '5' => Array ('2' => 1 ,'3' => 2, '4' => 3, '6' => 3), 
       '6' => Array ('2' => 3 ,'3' => 2, '4' => 2, '5' => 3) 
       ); 
$fmaxnum = array(); 
foreach($found as $fk => $fv){ 
    $max_key = array_keys($fv, max($fv)); 
    $fmaxnum[$fk] = array(
     ($max_key[0]) => max($fv) /* This will give small index value */ 
     /* (count($max_key)-1) => => max($fv) // this will give highest index value */ 
    ); 
} 

echo "<pre>"; 
print_r($fmaxnum); 
echo "</pre>"; 
array_keys機能を持つ
+0

ありがとうあなたは本当にありがとうYashさん本当にありがとう – shan

3

シンプルなソリューション:

// supposing $arr is your initial array 
$arrMax = array_map(function($v){ 
    $maximum = max($v); 
    return [array_keys($v, $maximum)[0] => $maximum]; 
}, $arr); 

print_r($arrMax); 

出力:

Array 
(
    [3] => Array 
     (
      [2] => 3 
     ) 

    [5] => Array 
     (
      [4] => 3 
     ) 

    [6] => Array 
     (
      [2] => 3 
     ) 
) 
+0

おかげで、本当にありがとうございました。本当にありがとうございました。 – shan

+0

@shan、ようこそ! – RomanPerekhrest

関連する問題