prinzschleifer
Mitglied
Hallihallo Community,
ich melde mich zurück. Ich weiß, ich hab ein ähnliches Thema bereits eröffnet, aber dieses ist doch soweit verschiedenen von meinem Ehemaligen, das ich mich entschlossen habe ein neues aufzumachen.
Nunja, erstmal habe ich ein paar Fragen. Da ich grade keinen PHP parser zu Hand habe, kann ich euch keinen korrekten PHP Code garantieren.
Betrachtet einmal folgendes Array:
So, jetzt muss ich erstmal sagen, was ich haben will:
Das Array soll rekursiv durchlaufen werden, da das Array beliebig groß werden kann. Nun sollen alle num-Einträge einer Unterkategorie addiert werden und ihrem Vater übermittelt werden.
Am Beispiel oben wäre das in einem Ausschnitt:
Und das soll jetzt für alle Unterkategorien also "subcat" passieren, sodass der Übervater, d.h. der Vater der keine Unterkategorie ist, die Summe aller num Einträge seiner Unterkategorien besitzt.
Bisher verstanden? Ich weiß es klingt jetzt danach, dass ich euch das machen las, damit ich nichts zu tun hab, aber ich möchte betonen, dass dies nicht so ist.
So, mein Vorschlag war, das Array rekursiv zu durchlaufen und die num Einträge zu addieren und die dann alle auf den Vater['num'] Eintrag zu addieren.
Das Problem das ich hatte war, dass ich das Array überhaupt nicht änder konnte: Beispiel:
Ich sehe selbst grade, dass ich garnicht dem Vater diesen num Eintrag geben sondern dem Unterarray selbst. Bei früheren Tests hatte ich aber auch ähnliche Probleme, dass ich das Array so nicht bearbeiten konnte.
Ich habe bereits in mehreren Foren gelesen, dass man um ein Array, das man rekursiv durchläuft, am besten editieren kann, wenn man es als Referenz definiert.
Also
oder sowas in der Art.
Kann mir jemand sagen, ob dies bei mir helfen könnte?
Auch bin ich auf die Funktion array_walk und array_walk_recursive gestoßen. Diese könnten mir in meinem Problem auch weiterhelfen, konnte dies aber auch noch nicht ausgiebig testen.
Also wenn mir irgendjemand helfen könnte, wäre ich demjenigen sehr verbunden!
Vielen, vielen Dank!
PS: Ich poste solche Sachen nicht auf der Jobbörse, da ich und ihr sicherlich auch was davon lernen könnt! ;-]
Vielen Dank fürs Lesen nochmal!
ich melde mich zurück. Ich weiß, ich hab ein ähnliches Thema bereits eröffnet, aber dieses ist doch soweit verschiedenen von meinem Ehemaligen, das ich mich entschlossen habe ein neues aufzumachen.
Nunja, erstmal habe ich ein paar Fragen. Da ich grade keinen PHP parser zu Hand habe, kann ich euch keinen korrekten PHP Code garantieren.
Betrachtet einmal folgendes Array:
PHP:
$array =
Code:
Array
(
[0] => Array
(
[num] = 1
[subcat] => Array
(
[0] => Array
(
[num] => 2
[subcat] => Array
(
[0] => Array
(
[num] => 2
)
[1] => Array
(
[num] => 2
)
)
)
)
)
Das Array soll rekursiv durchlaufen werden, da das Array beliebig groß werden kann. Nun sollen alle num-Einträge einer Unterkategorie addiert werden und ihrem Vater übermittelt werden.
Am Beispiel oben wäre das in einem Ausschnitt:
Code:
[0] => Array
(
[num] => 2 + (2 + 2) <--- aus beiden Einträgen unten
[subcat] => Array
(
[0] => Array
(
[num] => 2 <----
)
[1] => Array
(
[num] => 2 <---
)
)
Bisher verstanden? Ich weiß es klingt jetzt danach, dass ich euch das machen las, damit ich nichts zu tun hab, aber ich möchte betonen, dass dies nicht so ist.
So, mein Vorschlag war, das Array rekursiv zu durchlaufen und die num Einträge zu addieren und die dann alle auf den Vater['num'] Eintrag zu addieren.
Das Problem das ich hatte war, dass ich das Array überhaupt nicht änder konnte: Beispiel:
PHP:
function numberpropagate($array) {
if(is_array($array)) {
foreach($array as $index => $value) {
if(is_array($value['subcat'])) {
numberpropagate($value['subcat']);
}
else {
// Alle Einträge summieren und dem Vater übermitteln
$num = sumnum($array); // sumnum ist eine Funktion die dies macht
// Num bei dem Vater eintragen
$vater['num'] = $num + $vater['num'];
// Wo bekomm ich den Vater her? Eine Referenzarray übergeben?
}
}
}
return $array;
}
Ich sehe selbst grade, dass ich garnicht dem Vater diesen num Eintrag geben sondern dem Unterarray selbst. Bei früheren Tests hatte ich aber auch ähnliche Probleme, dass ich das Array so nicht bearbeiten konnte.
Ich habe bereits in mehreren Foren gelesen, dass man um ein Array, das man rekursiv durchläuft, am besten editieren kann, wenn man es als Referenz definiert.
Also
PHP:
function numberpropagate(&$array)
Kann mir jemand sagen, ob dies bei mir helfen könnte?
Auch bin ich auf die Funktion array_walk und array_walk_recursive gestoßen. Diese könnten mir in meinem Problem auch weiterhelfen, konnte dies aber auch noch nicht ausgiebig testen.
Also wenn mir irgendjemand helfen könnte, wäre ich demjenigen sehr verbunden!
Vielen, vielen Dank!
PS: Ich poste solche Sachen nicht auf der Jobbörse, da ich und ihr sicherlich auch was davon lernen könnt! ;-]
Vielen Dank fürs Lesen nochmal!