Problem mit multidimensionalem Array

Also, ich hab' hier aus 'ner MySQL Query ein multidimensionales Array das so aufgebaut ist:
Code:
Status                | Anzahl
Complete              | 23
Complete, on DVD #1   | 43
Oneshot               | 3
Oneshot, on DVD #1    | 23

Jetzt moechte ich die verschiedenen Stati so zusammenfassen, dass Complete und Complete, on DVD #1 zu Complete werden und deren Anzahl (23 + 43) addiert wird...

erst wollte ich's ca so machen:

Code:
foreach($status['status'] as $statname)
 {
 if(strstr($statname,"[Oneshot]") { $status_added[Oneshot]=$status_added[Oneshot]+
Und da weiss ich nicht mehr weiter - wie finde ich die Anzahl raus, die zu dem Status gehoert?

Gruss, Apo
 
suchst du sowas?

PHP:
<?php
$datenArray = array();
$datenArray[] = array( 'name' => 'gruppe1', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe1 aa', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe1 bb', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe1 ccc', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe2', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe3', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe3 iii', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe3 jjjjjj', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe3 k', 'count' => 1);


$searchPattern = "*******"; //muss einzigartig sein
$anzahlInArray = count($datenArray);  //vorher berechnen ist schneller
$pointer = -1;

for ($i=0; $i < $anzahlInArray; $i++) {
    if (substr($datenArray[$i]['name'], 0, strlen($searchPattern)) == $searchPattern) {
        $datenArray[$pointer]['count'] = $datenArray[$pointer]['count'] + $datenArray[$i]['count'];
    } else {
        $searchPattern = $datenArray[$i]['name'];
        $pointer = $i;
    }
}


foreach ($datenArray AS $entry) {
    echo $entry['name'].'('.$entry['count'].')'."\n";
}
?>

ausgabe:
Code:
gruppe1(4)
gruppe1 aa(1)
gruppe1 bb(1)
gruppe1 ccc(1)
gruppe2(1)
gruppe3(4)
gruppe3 iii(1)
gruppe3 jjjjjj(1)
gruppe3 k(1)
 
Ja, so aehnlich... es sollte halt nur
Code:
gruppe1 (4)
gruppe2 (1)
gruppe3 (4)
ausgeben...
Was muesste ich da noch aendern?
 
PHP:
<?php
$datenArray = array();
$datenArray[] = array( 'name' => 'gruppe1', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe1 aa', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe1 bb', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe1 ccc', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe2', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe3', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe3 iii', 'count' => 1);
$datenArray[] = array( 'name' => 'gruppe3 jjjjjj', 'count' => 5);
$datenArray[] = array( 'name' => 'gruppe3 k', 'count' => 1);

$newData = array();

$searchPattern = "*******"; //muss einzigartig sein
$anzahlInArray = count($datenArray);  //vorher berechnen ist schneller
$curMainEntry = array();

for ($i=0; $i < $anzahlInArray; $i++) {
    if (substr($datenArray[$i]['name'], 0, strlen($searchPattern)) == $searchPattern) {
        $curMainEntry['count'] += $datenArray[$i]['count'];
    } else {
        $searchPattern = $datenArray[$i]['name'];
        $newData[] = $curMainEntry;
        $curMainEntry = $datenArray[$i];
    }
}
$newData[] = $curMainEntry;
unset($curMainEntry); unset($anzahlInArray); unset($searchPattern); unset($newData[0]);


foreach ($newData AS $entry) {
    echo $entry['name'].'('.$entry['count'].')'."\n";
}

?>

Ausgabe:
Code:
gruppe1(4)
gruppe2(1)
gruppe3(8)
 
Hm... mit meinem Array klappt das leider nicht :/
Code:
SELECT other AS name, count(other) AS count  from `manga` GROUP BY other;"
Das ist die SQL Anfrage die ich mach, um das Array zu bekommen... Kann ich die so aendern, dass der Code passt, bzw was muss ich am Code aendern?
 
hmmm....kannst du mal dein array mit den 'name'/'count' eintraegen posten?

am besten die ausgabe von ( und in einem [ code] block)
PHP:
echo serialize($datenArray);
 
Code:
a:4:{i:0;s:10:"[Complete]";s:6:"status";s:10:"[Complete]";i:1;s:2:"26";s:6:"anzahl";s:2:"26";}
 
das problem wurde im irc geloest. folgendes kam dabei raus (bis auf das, dass die daten von der db kommen):

PHP:
<?php
$datenArray = array();
$datenArray[] = array( 'name' => '[gruppe1] a', 'count' => 1);
$datenArray[] = array( 'name' => '[gruppe1] aa', 'count' => 1);
$datenArray[] = array( 'name' => '[gruppe1] bb', 'count' => 1);
$datenArray[] = array( 'name' => '[gruppe1] ccc', 'count' => 1);
$datenArray[] = array( 'name' => '[gruppe2]', 'count' => 1);
$datenArray[] = array( 'name' => '[gruppe3]', 'count' => 1);
$datenArray[] = array( 'name' => '[gruppe3] iii', 'count' => 1);
$datenArray[] = array( 'name' => '[gruppe3] jjjjjj', 'count' => 5);
$datenArray[] = array( 'name' => '[gruppe3 test] k', 'count' => 1);

$newData = array();

$searchPattern = "*******"; //muss einzigartig sein
$anzahlInArray = count($datenArray);  //vorher berechnen ist schneller
$curMainEntry = array();

for ($i=0; $i < $anzahlInArray; $i++) {
    if (substr($datenArray[$i]['name'], 0, strlen($searchPattern)) == $searchPattern) {
        $curMainEntry['count'] += $datenArray[$i]['count'];
    } else {
        ereg('\[[a-zA-Z0-9 ]*\]', $datenArray[$i]['name'], $tmpSearch);
        $searchPattern = $tmpSearch[0];
        $newData[] = $curMainEntry;
        $curMainEntry = $datenArray[$i];
        $curMainEntry['name'] = $searchPattern;
    }
}
$newData[] = $curMainEntry;
unset($curMainEntry); unset($anzahlInArray); unset($searchPattern); unset($newData[0]);


foreach ($newData AS $entry) {
    echo $entry['name'].'('.$entry['count'].')'."\n";
}

?>

ausgabe:
Code:
[gruppe1](4)
[gruppe2](1)
[gruppe3](7)
[gruppe3 test](1)
 
Zurück
Oben