| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
Problem mit multidimensionalem Array
Diskussion: Problem mit multidimensionalem Array im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige
Also, ich hab' hier aus 'ner MySQL Query ein multidimensionales Array das so aufgebaut ist:
Code:
Status | Anzahl
...
 |
05.03.06, 15:27
|
#1 (permalink)
|
Registriert seit: 02.05.04 Likes: 0 | Problem mit multidimensionalem Array Anzeige 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 |
| |
05.03.06, 16:50
|
#2 (permalink)
| | Moderator
Registriert seit: 17.10.01 Likes: 0 | suchst du sowas? PHP-Code: <?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) |
| | | |
| | HaBOT
| - Anzeige - |
| |
05.03.06, 17:05
|
#3 (permalink)
| Themenstarter
Registriert seit: 02.05.04 Likes: 0 | Ja, so aehnlich... es sollte halt nur Code: gruppe1 (4)
gruppe2 (1)
gruppe3 (4) ausgeben...
Was muesste ich da noch aendern? |
| |
05.03.06, 20:24
|
#4 (permalink)
| | Moderator
Registriert seit: 17.10.01 Likes: 0 | PHP-Code: <?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) |
| |
06.03.06, 01:05
|
#5 (permalink)
| Themenstarter
Registriert seit: 02.05.04 Likes: 0 | 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? |
| |
06.03.06, 11:48
|
#6 (permalink)
| | Moderator
Registriert seit: 17.10.01 Likes: 0 | hmmm....kannst du mal dein array mit den 'name'/'count' eintraegen posten?
am besten die ausgabe von ( und in einem [ code] block) PHP-Code: echo serialize($datenArray);
|
| |
06.03.06, 15:20
|
#7 (permalink)
| Themenstarter
Registriert seit: 02.05.04 Likes: 0 | 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";} |
| |
18.03.06, 21:33
|
#8 (permalink)
| | Moderator
Registriert seit: 17.10.01 Likes: 0 | das problem wurde im irc geloest. folgendes kam dabei raus (bis auf das, dass die daten von der db kommen): PHP-Code: <?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) |
| |  | | |
| | | - Anzeige - |
| | [HaBo]
» Web, Network & Multimedia Palace
» (Web-) Design und webbasierte Sprachen
»
Problem mit multidimensionalem Array
| Themen-Optionen | | | | Ansicht | Linear-Darstellung |
Forumregeln
| Es ist Ihnen nicht erlaubt, neue Themen zu verfassen. Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten. Es ist Ihnen nicht erlaubt, Anhänge hochzuladen. Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten. HTML-Code ist aus. | | |
|