SetaPDF
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 06.11.2006, 19:00   #1
TP-Insider
 
Benutzerbild von dieter99
 
Registriert seit: Dec 2001
Ort: Oberfranken
dieter99 ist auf einem guten Weg

Schleife optimieren [schwieriger Fall]


Hallo,
ich benutze folgenden Code:
PHP-Code:
foreach ($variable[test][1] as $a)
{
    echo 
$a[name]."<br>";
    foreach (
$variable[test][$a[id]] as $b)
    {
        echo 
$b[name]."<br>";
        foreach (
$variable[test][$b[id]] as $c)
        {
            echo 
$c[name]."<br>";
            foreach (
$variable[test][$c[id]] as $d)
            {
                echo 
$d[name]."<br>";
            }
        }
    }

Wenn man genauer hinschaut dann erkennt man das sich die einzelnen Schleifen sehr ähneln. Es sind insgesamt 4 foreach-Schleifen. Wenn ich die Verschachtelung fortsetze (z.B. 15 foreach-Schleifen) dann wird viel Code erzeugt obwohl das Muster immer das Gleiche ist. Kann man diese Art der Verschachtelung durch eine Funktion (oder for-Schleife) vereinfachen?
Ich sehe keine Lösung.
dieter99 ist offline   Mit Zitat antworten


Alt 06.11.2006, 19:52   #2
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
PHP-Code:
function printArray($data) {
    foreach(
$data AS $k => $d) {
        echo 
$data['name']."<br>"
        if (
is_array($data[$d['id']])) {
            
printArray($data[$d['id']]);
        }
    }
}

printArray($variable['test'][1]); 
so ungefair?

Gruß
Jan

PS: ungetestet.
Stuck Mojo ist offline   Mit Zitat antworten
Alt 07.11.2006, 12:15   #3
TP-Senior
 
Benutzerbild von Irrbert
 
Registriert seit: Oct 2003
Ort: Berlin
Irrbert macht alles soweit korrekt
iteration
__________________
Dieser Beitrag wurde maschinell erstellt und ist ohne Unterschrift gültig.
Irrbert ist offline   Mit Zitat antworten
Alt 07.11.2006, 13:03   #4
TP-Supporter
 
Registriert seit: Dec 2005
[jacky] ist auf einem guten Weg
Zitat:
Zitat von Stuck Mojo
PHP-Code:
function printArray($data) {
    foreach(
$data AS $k => $d) {
        echo 
$data['name']."<br>"
        if (
is_array($data[$d['id']])) {
            
printArray($data[$d['id']]);
        }
    }
}

printArray($variable['test'][1]); 
so ungefair?

Gruß
Jan

PS: ungetestet.
naja, ist zwar einfacher zu lesen und der code ist auch verbessert, aber die performance ist sicher nicht verbessert dadurch (da es sich hier um eine rekursive funktion handelt) ...
[jacky] ist offline   Mit Zitat antworten
Alt 07.11.2006, 16:32   #5
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Zitat:
Zitat von [jacky]
naja, ist zwar einfacher zu lesen und der code ist auch verbessert, aber die performance ist sicher nicht verbessert dadurch (da es sich hier um eine rekursive funktion handelt) ...
wie löst man soetwas denn ohne eine Rekursion? ...
Stuck Mojo ist offline   Mit Zitat antworten
Alt 08.11.2006, 09:15   #6
TP-Special Mod
 
Benutzerbild von steffenk
 
Registriert seit: Feb 2005
Ort: Haan / NRW
steffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine Usersteffenk lebt für das TP und seine User
eben garnicht - die Tiefe des Arrays ist nicht bekannt, also muss man mit Rekursion arbeiten. Das hat auch nichts mit Performance zu tun, anders kommt man ja an die tieferen Elemente nicht dran.
Das Beispiel von StuckMojo zeigt dieses auf einfache Art, eine andere Möglichkeit gibt es nicht.
__________________

Typo3 · MySQLDumper · dislabs
·
manche Mühlen mahlen schneller ...
"Ich habe Rücken"
Horst Schlämmer
steffenk ist offline   Mit Zitat antworten
Alt 08.11.2006, 10:15   #7
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Zitat:
Zitat von St@eff.en
eben garnicht - die Tiefe des Arrays ist nicht bekannt, also muss man mit Rekursion arbeiten. Das hat auch nichts mit Performance zu tun, anders kommt man ja an die tieferen Elemente nicht dran.
Das Beispiel von StuckMojo zeigt dieses auf einfache Art, eine andere Möglichkeit gibt es nicht.
meine Meinung Aber man weiß ja nie... vielleicht hat Jacky ja doch irgendetwas in der Trickkiste

Gruß
Jan
Stuck Mojo ist offline   Mit Zitat antworten
Alt 09.11.2006, 18:26   #8
TP-Supporter
 
Registriert seit: Dec 2005
[jacky] ist auf einem guten Weg
Ne, ich stimme Steffen doch zu Stimmt schon, dass man dabei mit Rekursion arbeiten muss. Hatte vorher einen Denkfehler irgendwie!
[jacky] ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Schleife optimieren [schwieriger Fall] Schleife optimieren [schwieriger Fall]
« bei Formularversand auch VCF erzeugen? | GD -> Gif-Transparenz rausfinden »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:50 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67