array_unique funktioniert nicht richtig

Ceppi

Erfahrenes Mitglied
Hallo,

ich bin gerade dabei, für eine Lernseite eine Art 'Notenspiegel' zu programmieren, der seine Ergebnisse aus einer MySQL-DB holt. Dabei wollte ich die Noten und deren Häufigkeit anzeigen.
Die Noten befinden sich im Array 'noten_array', der (durch echo überprüft) die drei Testwerte [0]=5.5,[1]=5.5 und [2]=3.7 beinhaltet.
PHP:
$noten_werte = array_unique($noten_array);
$notenspiegel = array_count_values($noten_array);

//Ausgabe im Notenspiegel
echo ("<table><tr><td>Ergebnisse</td>");

for ($n=0; $n<count($notenspiegel); $n++)
{
$index1 = $noten_werte[$n];
echo ("<td>".$notenspiegel[$index1]."</td>");
}

echo ("</tr><tr><td>Häufigkeit</td>");

 for ($n=0; $n<$notenspiegel_anzahl; $n++)
{
echo ("<td>".$notenspiegel[$n]."</td>");
}

echo ("</tr></table>");
Nach einer Bearbeitung durch array_unique kennt der Array 'noten_werte' aber nur noch einen einzigen Wert, obwohl es doch eigentlich zwei sein müssten: 5.5 und 3.7 ?
Deswegen bekomme ich wahrscheinlich auch einen Haufen Offset-Fehler...
Wer kann mir das mit dem array_unique erklären?

Ceppi
 
Du hast die Funktion scheinbar schon richtig verstanden, vermutlich aber das Array nicht richtig überprüft.
Zu Testzwecken sollte man nicht mit [phpf]echo[/phpf], sondern mit [phpf]var_dump[/phpf] oder [phpf]print_r[/phpf] arbeiten.
Dein Hilfsarray benötigst Du übrigends nicht. Beispiel, ohne Formatierung:
PHP:
<?
$noten_array=array("5.5","5.5","3.7");
$notenspiegel = array_count_values($noten_array);

foreach($notenspiegel as $note => $anzahl) {
    echo $note." kommt ".$anzahl." mal vor. ";
}
/* Ausgabe:
5.5 kommt 2 mal vor. 3.7 kommt 1 mal vor.
*/
?>
[phpf]array_count_values[/phpf] kann übrigends nicht mit Floats arbeiten, da diese kein Array-Index sein können.
Gruß hpvw
 
Zurück