Ich habe eine MySQL Tabelle, die wie folgtPHP: Bestücken Array in einer rekursiven Weise
-------------------------
field | parent_field
------------------------
model | series
height | series
height | model
length | model
length | height
Die Tabelle sieht Struktur auf diese Weise ist, so dass jedes Feld mehrere parent_field
haben kann.
Ein Benutzer beginnt mit der Auswahl einer Serie, dann muss ich alle Felder erhalten, die geändert werden müssen.
Zum Beispiel, ich brauche einen Tisch zu haben, die
$fields = array(
'model' => [
'name' => 'model'
],
'height' => [
'name' => 'height'
],
'length' => [
'name' => 'length'
]
);
So enthält, obwohl Länge nicht parent_field
Serie hat, hatte aber Höhe was wiederum Serie als parent_field
.
Meine Logik
private function loadFields($parent) {
$children = array();
$children = $this->loadChildren();
foreach($children as $child) {
$data[$child->field][] = array(
'name' => $child->field,
.
.
.
);
}
}
Die Funktion loadChildren()
macht genau das wie folgt ist, hat es eine SELECT DISTINCT
und die Kinder des gegebenen Eltern zurückzukehren.
JEDOCH muss ich weiterhin Kinder für die aktuellen Kinder laden.
Ich stecke fest, kann mir jemand in die richtige Richtung zeigen?
Do Sie wissen, wie man Rekursion benutzt? Wenn Sie es nie getan haben, bereiten Sie sich darauf vor, dass Ihr Geist ernsthaft verdreht wird. Innerhalb der 'foreach'-Schleife, nachdem Sie jedes Feld bearbeitet haben, rufen Sie' loadFields ($ this) 'auf. –
Worauf bezieht sich $? loadFields() nimmt als Argument eine Zeichenkette, in diesem Fall, wenn $ child-> Feld – user1709251
Ich denke, es gibt mehr Probleme in Ihrem Code. Sollte die zweite Zeile nicht '$ children = $ parent-> loadChildren()' sein? In dem rekursiven Aufruf wird 'loadfields ($ child)' –