Hallo,
ich habe ein größeres Problem.
Der Ausgangs-Array, der aus der Datenbank kommt, ist 1-dimensional und sortiert nach Ebene und Sortierung.
Beispielcode (der folgende Array ist "$inputArray"):
Das Array soll verschachtelt werden, dazu stehen für jeden Eintrag die Werte parent_id und has_child zur Verfügung. In "parent_id" steht die ID des Elternelements, in "has_child" steht eine 1, falls der Eintrag ein Kind hat oder 0.
Ich habe nun versucht den Array entsprechend zu verschachteln, stoße aber bei der Rekursion auf ein Problem:
Habe die Zeilen, die Probleme machen auskommentiert. Wenn sie einkommentiert sind, kommt nichts mehr raus, es kommt zu einem Fehler.
Verstehe leider nicht, warum diese Funktion nicht funktioniert?
ich habe ein größeres Problem.
Der Ausgangs-Array, der aus der Datenbank kommt, ist 1-dimensional und sortiert nach Ebene und Sortierung.
Beispielcode (der folgende Array ist "$inputArray"):
PHP-Code:
Array
(
[1] => Array
(
[name] => Root
[stage] => 0
[sort] => 0
[has_child] => 1
[parent_id] => 0
)
[2] => Array
(
[name] => Eintrag 1
[stage] => 1
[sort] => 0
[has_child] => 0
[parent_id] => 1
)
[3] => Array
(
[name] => Eintrag 2
[stage] => 1
[sort] => 1
[has_child] => 1
[parent_id] => 1
)
[20] => Array
(
[name] => Eintrag 3
[stage] => 1
[sort] => 2
[has_child] => 0
[parent_id] => 1
)
)
Das Array soll verschachtelt werden, dazu stehen für jeden Eintrag die Werte parent_id und has_child zur Verfügung. In "parent_id" steht die ID des Elternelements, in "has_child" steht eine 1, falls der Eintrag ein Kind hat oder 0.
Ich habe nun versucht den Array entsprechend zu verschachteln, stoße aber bei der Rekursion auf ein Problem:
PHP-Code:
function rek( $inputArray )
{
foreach( $inputArray as $k => $v )
{
if( $v[parent_id] > 0 && isset($inputArray[$v[parent_id]]) )
{
$inputArray[$v[parent_id]][elemente][$k] = $inputArray[$k];
unset($inputArray[$k]);
}
}
#if( count($inputArray) > 1 )
#$inputArray = rek($inputArray);
return( $inputArray );
}
$arr = rek($inputArray);
echo "Ausgabe:<pre>";
print_r($arr);
echo "</pre>";
Verstehe leider nicht, warum diese Funktion nicht funktioniert?
Kommentar