Array auszählen

fredolin

Erfahrenes Mitglied
Hey PHP Gemeinde,

ich stehe mal wieder im Wald.. aber so was im Wald und sehe keine Bäume.. Ich habe ein Datenbankfeld, in dem einzelne oder mehrer Einträge enthalten sind.
Beispiel:
PHP:
Spaltenname: Auto
Inhalt der Spalte01: Ford
Inhalt der Spalte02: Honda,Hyndai
Inhalt der Spalte03: Porsche,Puntiac
Inhalt der Spalte04: VW
usw..
so ich machen einen DB aufruf und lese diese Tabelle aus. Nun möchtge ich die Anzhahl der Autotypen ermitteln. Es sind ja 6 Autotypen enthalten, wo in mehreren Spalten mehrer Autotypen eingetragen sind.

Wie kann ich dieses Problem lösen oder kann mir da einer einen Gedankenanstoß geben.
Meine Versuchen waren
PHP:
...dbabfrage...
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  $anzahl = count($row['auto']);
}
echo $anzahl;
aber hatte damit nicht den gewünschten erfolgt.

Viele Grüßen fredolin
 
Hallo Klaus,

ich bekomme dann immer als Ergebnis 4. Warum weiß ich nicht, aber in den Feldern wo mehrere Einträge stehen werden nur als 1 gezählt. Warum das so ist, weiß ich selber net.

Gruß Fredolin
 
Du zählst nur die Zeilen. Array ist eine Lösung

Irgend wie etwa so:
PHP:
$types = array(); //Array für sdie Typen initialisieren
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    //String in einen Array zerlegen und dem typen-Array hinzufügen
    $types = array_merge($types, explode(',', $row['auto']);
}
array_walk($types, 'trim'); //ggf Leerzeichen entfernen
$anzahl = count($types); //Alle Typen zählen, auch wenn sie mehrfach vorkommen
$uniquAnzahl = count(array_unique($types); //Jeden Typ nur einmal zählen
 
Hi Yaslaw,

erstmal Danke für deine Antwort. Ja das ich das über ein Array machen musste war mir schon bewusst. Aber wie war mir schleierhaft. Auch kannte ich das "array_walk" ned. Ich hab zwar auch viel bei php.net geschaut aber nicht dies gefunden.
Ich danke dir und es klappt wunderbar.
DANKE

Gruß Fredolin
 
Zurück