[PHP] Array durchackern!
-
Hi @all!
Folgendes Problem habe ich... ich weiß, dass es ganz einfach zu lösen ist, aber irgendwie schaffe ich’s nicht allein
Dieses Array liegt mir vor:
Array ( [0] => Array ( [nr] => 1 [legs] => Array ( [0] => Array ( [dir] => 1 [class] => K [equip] => 320 [stops] => 0 ) [1] => Array ( [dir] => 1 [class] => K [equip] => 777 [stops] => 0 ) [2] => Array ( [dir] => 2 [class] => K [equip] => 777 [stops] => 0 ) [3] => Array ( [dir] => 2 [class] => K [stops] => 0 ) ) [stops_forw] => 0 [stops_backw] => 0 )
Da möchte ich eine Variable anlegen und sie hochzählen, wenn die Werte bei [dir] gleich sind.
Z.B. hier in diesem Fall habe ich an der Stelle [0] und [1] jeweils die Werte "1" und bei [2] und [3] die Werte "2".
Dann möchte ich für den Wert "1" die Variable extra hochzählen und für den Wert "2" auch.Wie muss ich das bewältigen?
Irgendwie fehlt mir die Idee...Für jede schnelle Hilfe wäre ich Dankbar.
-
mit einem array
if($key=='dir') counter[value]++;
durch counter[value]++ erhoehst du in deinem zaehl-array jeweils den passenden wert um 1
-
Danke für die schnelle Antwort!
Aber was soll ich unter [$value] verstehen?Ich dachte, um diesen Array zu bearbeiten, brache ich eine while-Schleife?!
Es kann nämlich ziemlich groß sein und viele Werte enthalten.Um es präziser auszudrucken: ich möchte nämlich wissen, dass es in dem Array an der Stelle [dir] sind 2x 1 drin und 3x 2...
Kannst Du es mir bitte etwas genauer erläutern... sozusagen auch für Dümmchen?
Danke!
-
Du musst in einer foreach dein Array durchgehen und im Schleifenkörper dann den Wert von dir als Index für dein Counter-Array verwenden, und damit dann entsprechend hochzählen.
-
leider gehen hier alle davon aus, dass man ein Profi ist und man bekommt keine Antworten für wirkliche Anfänger, deshalb komme ich auch oft hier nicht zu weit....
Geht's bitte bitte etwas einfach? Vielleicht mir den Code schreiben, damit ich eine Vorstellung davon habe?
Das wäre wirklich super!
-
foreach($deinarray[0]['legs'] as $entry) { $counter[$entry['dir']]++; }
Ist aber nicht getestet
-
Sorry, was soll aber $array[0]['dir'] bewirken?
Bekomme nämlich folgende Warnmeldung:
Warning: Invalid argument supplied for foreach()und kannst Du mir bitte noch erklären, was genau hier gemacht wird?
-
Für $deinarray musst du natürlich den tatsächlichen Namen deines Arrays einsetzten (du hast uns ja nur den Aufbau gezeigt).
Laut deiner Struktur befinden sich ja die zu untersuchenden Arrays an der Stelle [0]['legs'] - also gehst du diese durch.
In $entry hast du dann jeweils eines dieser Arays:Array ( [dir] => 1 [class] => K [equip] => 320 [stops] => 0 )
Jetzt nutzt du einfach $entry['dir'] (also die Werte, deren Häufigkeit du zählen willst) als Index und zählst das entsprechende Element in $counter hoch.
Nach dem foreach findest du in counter);
-
Die Erklärung hat mir wirklich weitergeholfen.
Vielen Dank...Und kaum habe ich's verstanden, funktioniert's auch
-
Hi nochmal!
Jetzt nochmal zu diesem Code eine Frage:
foreach($deinarray[0]['legs'] as $entry) { $counter[$entry['dir']]++; }
Was ist hier an dem Array falsch oder nicht so ganz in Ordnung, dass ich immer bei solchen foreach-Aufrufen folgende Meldung bekomme:
Invalid argument supplied for foreach()
unknown() in line blablaWäre super, wenn mir das jemand allgemein erklären würde. Weil ich diese Warnmeldung einfach viel zu oft sehe!!!
Danke im voraus
-
Dann scheinst du als ersten Parameter kein gültiges Array angegeben zu haben