php.de

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

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 20.06.2011, 14:54  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

hm du darfst den $level "da am Anfang" nicht mit einer Schleife erzeugen (und anhängen) - die Folge siehst du ja, [level0][level1]

vielmehr musst du im if-Block das Level jeweils dynamisch erzeugen - und beim jeweiligen Eintrag besteht es ja nur aus ['levelA'] (A steht für deine Verschachtelungsebene)

und nikosch hat vermutlich recht, ist sehr unflexibel ....
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 20.06.2011, 14:58  
Erfahrener Benutzer
 
Registriert seit: 11.04.2011
Beiträge: 260
PHP-Kenntnisse:
Fortgeschritten
lcrash wird schon bald berühmt werden
Standard

Statt levelNummer doch lieber einfach "children" und die Tiefe ergibt sich eben aus der Tiefe des Arrays.

Siehe auch: http://www.php.de/php-einsteiger/806...erbessern.html (meinen PHP code verbessern) und http://de.wikipedia.org/wiki/Nested_sets
lcrash ist offline   Mit Zitat antworten
Alt 20.06.2011, 15:10  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Schau Dir bitte das Konzept der Rekursion an.
Rekursion ist doch gar nicht mal notwendig.
Trainmaster ist offline   Mit Zitat antworten
Alt 20.06.2011, 15:16  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Bitte keine Aussagen aus dem Kontext reißen. Oder begründet kritisieren.
__________________
--
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 20.06.2011, 15:32  
Erfahrener Benutzer
 
Registriert seit: 25.05.2010
Beiträge: 852
PHP-Kenntnisse:
Anfänger
Trainmaster wird schon bald berühmt werden
Standard

Soweit ich das erkennen kann, handelt es sich um eine Parent-Struktur. Gerne verweise ich auf folgenden Link: http://blog.tekerson.com/2009/03/03/...a-nested-tree/. Eine Rekursion ist nicht zwingend erforderlich.
Trainmaster ist offline   Mit Zitat antworten
Alt 20.06.2011, 16:39  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ja. Und ich habe gesagt, dass eine verschachtelte Struktur mit ungleichen Schlüsseln schlecht zu verarbeiten ist. Und sie sich bitte Rekursion ansehen muss (um zu erfahren, wie man solche Bäume sinnvoll verarbeiten kann). Vom Erstellen des Baums habe ich nicht gesprochen (nur insofern, dass die Schlüssel schlecht gewählt sind).

Angemerkt sein, dass im verlinkten Verfahren mit Referenzen auf Arrayelemente gearbeitet wird, was gerade für Anfänger sehr schwer zu handeln ist und damit eine potentielle Fehlerquelle darstellt.
__________________
--
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 21.06.2011, 09:48  
Neuer Benutzer
 
Registriert seit: 20.06.2011
Beiträge: 5
PHP-Kenntnisse:
Fortgeschritten
nina befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank Euch allen.

Den Link von Trainmaster fand ich sehr interessant, zumal ich dann auch nicht so extrem viele Datenbankabfragen habe. Mit der Funktion bin ich ans Ziel gekommen.

Danke auch für den Hinweis auf den Unsinn mit den ['level0'], damit hätt ich später sicher Probleme bekommen.

Gruß Nina

PHP-Code:
function convertToTree(array $flat$idField 'id',
                            
$parentIdField 'parentId',
                            
$childNodesField 'childNodes') {
        
$indexed = array();
        
        
// first pass - get the array indexed by the primary id
        
foreach ($flat as $row) {
            
$indexed[$row[$idField]] = $row;
            
$indexed[$row[$idField]][$childNodesField] = array();
        } 
     
        
//second pass
        
$root null;
        
$roots = array();
        
$return null;
        foreach (
$indexed as $id => $row) {
            
$indexed[$row[$parentIdField]][$childNodesField][$id] =& $indexed[$id];
            if (
$row [$parentIdField] == 0) {
                
$root $id;
                
$roots[] = $id;
            }
        }
        
        foreach (
$roots as $k) {
            
$return [$k] = $indexed [$k];
        }
        
        return 
$return;
    } 
    
    function 
createStructur(){
        
        
$this->tree[0]['MARKENID'] = 1;
        
$this->tree[0]['MARKENNAME'] = "MARKENNAME 1";
        
$this->tree[1]['MARKENID'] = 2;
        
$this->tree[1]['MARKENNAME'] = "MARKENNAME 2";
        foreach(
$this->tree as $index=>$elem){
            
//GRUPPEN///////////////////////////////////////////
            
$sql "SELECT GRUPPENID,PRODUKTGRUPPE,REIHENFOLGE,PARENTID,MARKENID 
                FROM produktgruppen 
                WHERE MARKENID='"
.$this->tree[1]['MARKENID']."' 
                ORDER BY produktgruppen.REIHENFOLGE,produktgruppen.GRUPPENID ASC"
;
            
$result $GLOBALS['DB']->query($sql);
            
$result $this->convertToTree($result'GRUPPENID''PARENTID','childNodes');
            
$this->tree[$index]['childNodes'] = array();
            
$this->tree[$index]['childNodes'] = $result;
            unset(
$result);
        }
        echo 
"<pre>";print_r($this->tree);echo "</pre>";
    } 
nina 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
Variable aus Text und Variable zusammensetzen monty.x PHP Einsteiger 16 13.04.2011 13:15
Fixe Anzahl als variablen speichern wernersbacher PHP Einsteiger 7 08.03.2011 20:59
PHP5 und Variablen initialisieren kojak2008 PHP Tipps 2010 9 17.08.2010 14:33
[Erledigt] Variable in foreach erweitern ohne zurücksetzen Polliny PHP Tipps 2010 2 23.06.2010 10:13
Variable Variablen zusammen mit Arrays Kenshin PHP Tipps 2008 2 20.04.2008 15:30
unerklärliches Leeren von Variablen KuShi PHP Tipps 2007 2 08.07.2007 15:19
Teil einer Variablen mit einer Variablen ersetzen ? simsalabim PHP Tipps 2007 11 20.03.2007 20:36
Zwei Variablen vor Ausgabe addieren und als Variable ausgebe 022.9 PHP Tipps 2006 6 07.02.2006 15:50
Variable aus Variablen zusammensetzen juhuwoorps PHP Tipps 2007 1 28.11.2005 21:50
Variable mit URL und GET Variablen PHP Tipps 2005-2 2 04.10.2005 22:37
Variablen in Klassen Faebe PHP Tipps 2005 5 07.02.2005 14:42
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
Warum wird Variable nicht übergeben??? Anuschka PHP Tipps 2005 2 06.01.2005 13:22
variablen aus klassen weiterverwenden PHP Tipps 2004 6 05.07.2004 15:01

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php variable variablen in classen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:56 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