Ich habe folgendes Problem: Ich habe ein Array, das ca. 100 Arrays folgenden Aufbaus enthält:
Wichtig sind cid (aktuelle ID) und pid (ID des Elternelements)
Dieses wird vorher mittels usort so sortiert, das die Elemente mit der pid=0 oben stehen und alphabetisch sortiert sind(Schritt 1). Ich habe desweiteren eine rekursive Funktion (Schritt 2), der ich den Kontrollwert, das Array sowie ein neu generiertes Array übergebe:
Sinn der ganzen Aktion ist, das $array in $new_array so zusammenzubauen, das die einzelnen Elemente ihren jeweiligen Eltern zugeordnet werden und eine sortierte, formatierte Ausgabe möglich ist. Dabei entsteht quasi ein Baum, der ca. 10 Hauptelemente mit verschiedenen Unterelementen enthält:
Aber nun zu meinem Problem: Die Funktion läuft lokal (Ubuntu 8.04, PHP 5.2.4) perfekt, remote (Debian Etch, PHP 5.2.0) dagegen bricht sie nach dem ersten Durchlauf der Rekursion ab und liefert nur folgendes:
Ich habe die Schleife anstelle mit foreach auch schon mit
versucht, aber dann ist es lokal auch nur ein Zweig (remote auch) und eine for-Schleife ergibt ebenfalls das gekürzte Ergebnis.
Ich habe ja eine php.ini-Einstellung im Verdacht, aber welche? Oder übersehe ich was anderes?
Code:
Array
(
[cid] => 1000
[pid] => 0
[name] => Name
[link] => http://localhost/mein_link.html
[depth] => 0
)
Dieses wird vorher mittels usort so sortiert, das die Elemente mit der pid=0 oben stehen und alphabetisch sortiert sind(Schritt 1). Ich habe desweiteren eine rekursive Funktion (Schritt 2), der ich den Kontrollwert, das Array sowie ein neu generiertes Array übergebe:
PHP-Code:
function sortiere_zwei($array) {
$new_array = array();
findAll(0, $array, $new_array);
return $new_array;
}
function findAll($pid, &$array, &$new_array) {
foreach ($array as $data) {
if ($data['pid'] == $pid) {
$new_array[] = $data;
findAll($data['cid'], $array, $new_array);
}
}
}
Code:
Hauptelement1 ----Unterelement1 ----Unterelement2 --------Unterelement2_1 Hauptelement2 ----Unterelement3 . . .
Code:
Hauptelement1 ----Unterelement1
PHP-Code:
while(list(,$data) = each($array))
Ich habe ja eine php.ini-Einstellung im Verdacht, aber welche? Oder übersehe ich was anderes?

Kommentar