Bear mit mir, wenn das unklar ist; Ich habe Probleme damit, meinen Kopf vollständig darum zu wickeln (daher bin ich hier, um um Hilfe zu bitten).Tracking-Tiefe in Rekursion
Ich habe ein Array, das wie folgt aussieht:
Array
(
[DimA1] => Array
(
[DimB1] => Array
(
[DimC1] => Array
(
[value1] => 13708
[value2] => 4.5
)
[DimC2] => Array
(
[value1] => 1846
[value2] => 15.8
)
)
[DimB2] => Array
(
[DimC1] => Array
(
[value1] => 18166
[value2] => 6.4
)
)
[DimA2] => Array
(
....... etc
Ich muss durch dieses Array treten und wenn ich nach Wert1 und Wert2 bekommen, muss ich einige Datenbankeinlagen tun. Zu diesem Zeitpunkt muss ich genau wissen, welche Arrays ich gerade durchlaufen habe und ihren Schlüsselnamen als Teil meiner Datenbankeinfügungen verwenden.
Meine aktuelle Lösung sieht wie folgt aus:
public function recurseCounts($array,$dims = array()) {
foreach ($array as $key => $value) {
$dims[] = $key;
if (isset($value['value1']) || isset($value['value2'])) {
print_r($value); // For debugging...
print_r($dims); // For debugging...
// DB Logic to insert dimensions in to DB here
// DB Logic to insert values in to DB here
array_pop($dims);
} else {
$this->recurseCounts($value,$dims);
}
}
}
Das funktioniert, bis der Punkt der Schleife DimB2 trifft, das ist, wo die Dinge beginnen whacky bekommen.
Irgendwelche Ideen, wie man das löst?