Array Items in Kategorie zählen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzahl
array
artikel
auto
bezeichnung
code
dank
ermitteln
extra array
funktionieren
item
jeweiligen kategorie
kategorie
liste
motorrad
nutzfahrzeug
problem
struktur
vorhanden danke
wert kategorie
-
Hallo
ich habe ein multidimensionales Array mit der Struktur in etwa so:
[0] --> [id] --> (Wert) --> [titel] --> (Wert) --> [kategorie] --> (Wert) ... [1] --> [id] --> (Wert) --> [titel] --> (Wert) --> [kategorie] --> (Wert) ... [2] ...
Die Liste der Kategorien hab ich vorher leider nicht in einem Extra-Array
Ich weiss vorher nicht wieviele Kategorien es sind, auch nicht deren Bezeichnung.
Wie kann ich die Anzahl der Artikel je Kategorie ermitteln / zählen ?
Am liebsten so, dass ich je Kategorie ein neues Array bekomme.
bitte ein Code-Beispiel ... DANKE!
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Items der jeweiligen Kategorie zählen sollte in etwa so funktionieren:
$array = array( 0 => array ( 'id' => '1', 'titel' => 'TestA', 'kategorie' => 'test1' ), 1 => array ( 'id' => '2', 'titel' => 'TestB', 'kategorie' => 'test1' ), 2 => array ( 'id' => '3', 'titel' => 'TestC', 'kategorie' => 'test2' ) ); $ai = new AppendIterator; $ai->append(new RecursiveIteratorIterator(new RecursiveArrayIterator($array))); $counters = array(); foreach($ai as $key=>$value) { if ('kategorie' === $key ) { $counters[$value] += 1; } } echo '<pre>'; print_r($counters); echo '</pre>';
Oder so:
$array = array( 0 => array ( 'id' => '1', 'titel' => 'TestA', 'kategorie' => 'test1' ), 1 => array ( 'id' => '2', 'titel' => 'TestB', 'kategorie' => 'test1' ), 2 => array ( 'id' => '3', 'titel' => 'TestC', 'kategorie' => 'test2' ) ); $counters = array(); foreach ($array as $item) { $kategorie = $item['kategorie']; if (!isset($counters[$kategorie])) { $counters[$kategorie] = 0; } $counters[$kategorie]++; } echo '<pre>'; print_r($counters); echo '</pre>';
Beitrag zuletzt geändert: 5.5.2011 15:27:11 von fabo -
danke, funktioniert ja super, ... edit ... beide Varianten,
jetzt habe ich noch das Problem, dass es auch Unter-Kategorien gibt
diese werden im Wert von [kategorie] durch einen Trenner zur Hauptkategorie angehängt
BSP:
...
$array[1[kategorie] = "KFZ - Auto"
$array[2[kategorie] = "KFZ - Motorrad"
$array[3[kategorie] = "KFZ - Nutzfahrzeug"
...
also Trenner ist hier - (Minus mit Leerzeichen davor und danach)
ne Idee, wie ich sowas am besten ordnen / sortieren kann?
vielleicht mit ...
if (preg_match($trenner,$katekorie) ) {
$tmpkat = explode($trenner,$katekorie);
$hauptkat = $tmpkat[0];
$subkat = $tmpkat[1];
}
else {
$hauptkat = $katekorie; // keine Sub-Kategorie vorhanden
}
Danke
Beitrag zuletzt geändert: 5.5.2011 15:54:25 von webclub -
Wie wärs mit arsort(), krsort() oder rsort()?
EDIT:
Okay jetzt hab ich das Problem verstanden :D Ich überleg mir was...
EDIT:
Meinst du das so?
$array = array( 0 => array ( 'id' => '1', 'titel' => 'TestA', 'kategorie' => 'KFZ - Motorrad' ), 1 => array ( 'id' => '2', 'titel' => 'TestB', 'kategorie' => 'KFZ - Auto' ), 2 => array ( 'id' => '3', 'titel' => 'TestC', 'kategorie' => 'KFZ - Nutzfahrzeug' ) ); $ai = new AppendIterator; $ai->append(new RecursiveIteratorIterator(new RecursiveArrayIterator($array))); $counters = array(); foreach($ai as $key=>$value) { if ('kategorie' === $key ) { $kategorien = explode(' - ', $value); if(isset($kategorien[1])) { $counters[$kategorien[1]] += 1; } else { $counters[$kategorien[0]] += 1; } } } ksort($counters); echo '<pre>'; print_r($counters); echo '</pre>';
Beitrag zuletzt geändert: 5.5.2011 16:30:26 von fabo -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage