PHP :: Aufgabe #82

3 Lösungen Lösungen öffentlich

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:

vote_ok
von x9eleven (640 Punkte) - 05.08.2015 um 16:15 Uhr
Quellcode ausblenden PHP-Code
<?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>";
        ?>
vote_ok
von Exception (4370 Punkte) - 26.05.2018 um 19:47 Uhr
Quellcode ausblenden PHP-Code
<?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));
}

?>

vote_ok
von paddlboot (2970 Punkte) - 12.08.2019 um 14:05 Uhr
Quellcode ausblenden PHP-Code
<?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;
?>