2016-03-24 8 views
4

Unten ist mein Array:Finden Maximalwert in PHP-Array

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

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

In diesem Array ich die maximale Anzahl finden möchten, und wenn das Array die gleichen Maximalwerte enthält dann wählen wir ein zufällig Maximalwert.

Erwartete Ausgabe wie folgt:

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

     ) 

    [5] => Array 
     (

      [4] => 3 

     ) 

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

     ) 

) 

Dies ist, was ich habe versucht:

$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

[Ich bin lass es einfach hier] (http://php.net/manual/en/function.max.php) – Ohgodwhy

+0

$ gefunden = 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(); \t \t \t foreach ($ wie $ fk gefunden => $ 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 echo "

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

+0

Ich schreibe Code wie oben – shan

Antwort

0

, wenn Sie den höchsten Wert nur wissen wollen, wie ich

In diesem Array habe ich verstanden, möchte die maximale Anzahl finden und wenn das Array die gleichen Maximalwerte enthält, wählen wir einen Maximalwert nach dem Zufallsprinzip.

Sie konnte dies nur tun

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

das ganze Array foreach wird und die Werte auf $result drücken, dann verwenden Sie haben nur ein Level-Array und leicht max Funktion

3

Sie max-Wert mit max() zu bekommen, aber für den Index haben Sie array_keys()

verwenden Sie können dies versuchen:

$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>"; 
+0

Vielen Dank Yash Sir wirklich Dankeschön – shan

3

Einfache Lösung mit array_map und array_keys Funktionen:

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

Der Ausgang:

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

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

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

Vielen Dank Roman wirklich danke für Hilfe – shan

+0

@shan, du bist willkommen! – RomanPerekhrest

Verwandte Themen