php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.03.2010, 12:23  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.037
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] foreach referenz rekrusiv

Hallo,

ich habe eine Frage bezüglich eines arrays welches mittels foreach übertragen wird und rekrusiv durchgearbeitet wird

Ausgangsskript: (nicht schön verdeutlicht meine Frage jedoch gut)
PHP-Code:
private static function getPageparent($pages$page)
    {
        
        
$buffer = array();
    
        foreach(
$pages as $p)
        {    
            if(
$p['Page']['parent_id'] == $page['id'])
            {
                
$buffer[] = array(
                    
'children'=> self::getPageparent($pages$p['Page'])
                );
            
            }
        }
        return 
$buffer;
    } 
wird $pages ( hier -> 'children'=> self::getPageparent($pages, $p['Page']) ) jedes mal komplett kopiert?

ist meine vermutung richtig, dass ich keine referenz auf pages übergeben kann, weil der interne array zeiger dann chaos macht?
notyyy ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.03.2010, 12:48  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Ja, es wird jedesmal kopiert.
zur zweiten Frage: Beachte den Kommentar von Paul Chateau vom 17. Mai 2005 bei foreach
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline   Mit Zitat antworten
Alt 04.03.2010, 13:32  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.037
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

danke, wollte mich nur bevor ich optimiere nochmal vergewissern
notyyy ist offline   Mit Zitat antworten
Alt 04.03.2010, 14:12  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.248
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Wenn Du schon OOP arbeitest, dann solltest Du das Menü auch als Objektstruktur anlegen. Denn statt Arrays mit Ihren Schlüsselbeschränkungen kannst Du so beliebige Datenstrukturen speichern und sie trotzdem wie ein Array benutzen. Sogar direkt ausgeben über die __toString Implementierung.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 05.03.2010, 10:36  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.037
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

das array entspricht einer datenbankstruktur, die menustruktur parse ich hier direkt von der datenbank in ein array welches ich direkt als json ausgeben kann ....
notyyy ist offline   Mit Zitat antworten
Alt 05.03.2010, 10:44  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Dafür brauchst du aber normalerweise keine Rekursion, wenn du das in zwei Schritte aufteilst:
1. Zusammenbau der Objekte und Speichern in einem Array. ID des Elements ist der Key.
2. Durchlaufen der Array-Elemente, Speichern der Vater-Kind-Beziehung. Die obersten Elemente deiner Menüstruktur werden in das Result-Array übertragen. Durch Schritt 1 hast du jeden Vater eines Elementes im Zugriff, egal wie tief es im Menübaum hängt.

Und schon ist die Rekursion draussen.
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline   Mit Zitat antworten
Alt 05.03.2010, 10:51  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.037
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

ich muss das json objekt jedoch rekrusiv abbilden {data : "title", child : [{data..., child : [{....},{....
notyyy ist offline   Mit Zitat antworten
Alt 05.03.2010, 12:23  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Na und? Lies nochmal, was ich geschrieben habe.
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline   Mit Zitat antworten
Alt 05.03.2010, 15:51  
Erfahrener Benutzer
 
Registriert seit: 12.05.2005
Beiträge: 1.037
PHP-Kenntnisse:
Fortgeschritten
notyyy befindet sich auf einem aufstrebenden Ast
Standard

ja, was mir dann aber nicht ermöglicht innerhalb des JSON's die daten geschachtelt zu liefern.

oder habe ich nen brett vorm kopf??
notyyy ist offline   Mit Zitat antworten
Alt 05.03.2010, 17:21  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.248
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Doch das geht. Und JSON generieren zu müssen ist auch kein Grund, nicht OOP zu nutzen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Mehrdimensionales Array als verschachtelte Liste ausgeben mit foreach kristina PHP Tipps 2009 5 26.08.2009 14:27
[Erledigt] foreach mit Mehrdimensionalen Arrays Registrierer PHP Tipps 2009 11 15.07.2009 19:14
[Erledigt] foreach will nicht mit Multiple-Select webproger PHP Tipps 2009 2 04.05.2009 10:55
[Erledigt] foreach mit Mehrdimensionalen Arrays serious-cool PHP Tipps 2009 2 24.02.2009 01:49
Referenz in mehrdimensionalem Array auch nach Kopie? ciss PHP Tipps 2008 3 03.12.2008 18:29
Objekte: Next() durch foreach() erstetzt - Object of type variant did not create... badrandolph PHP Tipps 2008 7 26.11.2008 19:14
[Erledigt] foreach liefert Invalid argument supplied for foreach() fehler! litterauspirna PHP Tipps 2008 8 11.08.2008 11:22
foreach equivalent aber mit Datenmanipulation Matt PHP Tipps 2008 2 26.02.2008 16:47
Referenz wiederherstellen cycap Datenbanken 8 03.09.2007 14:53
Lambda-Funktion und array_map/_filter gegen foreach KingCrunch PHP Tipps 2007 5 29.04.2007 10:28
foreach verändert die werte des arrays das durchlaufen wird Crypi PHP Tipps 2007 5 10.01.2007 08:24
foreach mit zwei übergebenen Arrays ? [erledigt] horstenpeter PHP Tipps 2006 1 03.09.2006 16:47
$_FILES mit foreach() PHP Tipps 2005-2 5 20.10.2005 10:27
foreach: Übergabe by reference Stümper PHP Tipps 2005 2 15.02.2005 15:35
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
foreach referenz, rekursion referenz php, rekrusives durchlaufen objekt, php rekrusiv, foreach rekursion php, php foreach jedesmal, menübaum ohne rekursion, php foreach referenz, php foreach referenzen, rekrusiv, oop php menübaum

Alle Zeitangaben in WEZ +1. Es ist jetzt 16:14 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum