PHP :: Aufgabe #82
3 Lösungen

Das Häufigste Element in einem Array
Anfänger - PHP
von klhlubek19
- 16.07.2015 um 13:46 Uhr
Schreiben Sie ein Programm, das aus einem Array das häufigste Element findet. Sollte es mehrere gleicher Anzahl finden, so darf irgend ein Element dieser Häufigsten ausgegeben werden.
Lösungen:

<?php // Array anlegen $elArr = ["Element0" => 7, "Element1" => 7, "Element2" => 7, "Element3" => 9, "Element4" => 9, "Element5" => 8, "Element6" => 9, "Element7" => 9, "Element8" => 9, "Element9" => 7]; $geCountet = (zaehler($elArr)); // Funktionen anlegen function zaehler($array) { // Speichert Values aus einem Array als Schluesselwerte in einem neuen Array und speichert die Anzahl als Value $counts = []; foreach ($array as $value) { if (isset($counts[$value])) { $counts[$value] ++; } else { $counts[$value] = 1; } } return $counts; } function getKeyOfMaxVal(array $arr) { $maxKey = null; foreach ($arr as $key=>$val) { if (is_int($val)) { if ($maxKey === null || $val > $arr[$maxKey]) { $maxKey = $key; } } } return $maxKey; } // Tabellenkopf anlegen echo "<table border=1><tr><td>Element 0</td><td>Element 1</td><td>Element 2</td><td>Element 3</td><td>Element 4</td><td>Element 5</td>" . "<td>Element 6</td><td>Element 7</td><td>Element 8</td><td>Element 9</td></tr><tr>"; // Alle Elemente des Arrays in Tabelle ausgeben foreach ($elArr as $key => $value) { echo "<td>$value</td>"; } echo "</table><br />"; // Tabelle schliessen echo "<p>Ausgabe des meist vorkommenden Schluesselwertes mit Anzahl</p>"; $maxKey = getKeyOfMaxVal($geCountet); echo "<p>Der Schluesselwert: $maxKey kommt {$geCountet[$maxKey]} mal in dem Array vor.</p>"; ?>

<?php $bli = array ('rot', -1, 'rot', 'bli-bla-blub', 'blau', 'rot', 42, 'grün', 'gelb', 'gelb', 'gelb'); // "rot" und "gelb" sind am häufigsten try { $blub = getMostCommonlyElements($bli); echo '<pre>'; print_r($bli); print_r($blub); echo '</pre>'; } catch (Exception $e) { echo $e->getMessage(); } // prüft elemente eines übergebenen arrays auf deren häufigkeit. // gibt alle elemente die am häufigsten sind zurück, zusätzlich wird noch die anzahl zurückgegeben. // // @parameter: array $bla // @throws: exception // @returns: array function getMostCommonlyElements($bla) { if(!is_array($bla)) { throw new Exception('Es wird ein Array als Übergabeparameter erwartet!'); } $temp = array_count_values($bla); return array('Key' => array_keys($temp, max($temp)), 'Amount' => max($temp)); } ?>

<?php $array = array(50, 10, 2, 23, 2, 50, 65, 2, 41, 2, 50, 50); $anzahl = array_count_values($array); $haeufigste = array_search(max($anzahl), $anzahl); echo $haeufigste; ?>