Ankündigung

Einklappen
Keine Ankündigung bisher.

Rekursive Funktion funktioniert lokal, aber nicht remote?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Rekursive Funktion funktioniert lokal, aber nicht remote?

    Ich habe folgendes Problem: Ich habe ein Array, das ca. 100 Arrays folgenden Aufbaus enthält:


    Code:
    Array
            (
                [cid] => 1000
                [pid] => 0
                [name] => Name
                [link] => http://localhost/mein_link.html
                [depth] => 0
            )
    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:

    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);
            }
        }

    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:

    Code:
    Hauptelement1
    ----Unterelement1
    ----Unterelement2
    --------Unterelement2_1
    Hauptelement2
    ----Unterelement3
    .
    .
    .
    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:

    Code:
    Hauptelement1
    ----Unterelement1
    Ich habe die Schleife anstelle mit foreach auch schon mit

    PHP-Code:
    while(list(,$data) = each($array)) 
    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?

  • #2
    PHP-Code:
    <?php
    function RenderMenu(&$arrMenu$intPid 0) {
      foreach (
    $arrMenu as $arrElement) {
        if (
    $arrElement["pid"] == $intPid) {
          
    RenderElemente($arrElement);
          
    RenderMenu($arrMenu$arrElement["cid"]);
        }
      }
    }
    function 
    RenderElement($arrElement) {
      
    printf('[url="%s"]%s[/url]'$arrElement["link"], $arrElement["name"]);
    }
    ?>
    Wenn du das noch in eine Klasse packst wirds fast schon professionell


    Warum dein Skript nicht klappt weiss ich auch nicht, uebers error_reporting() und Debuggen hast du leider noch nichts gesagt, weshalb ich nicht anfange zu raten

    Kommentar

    Lädt...
    X