Anzeige

Mehrdimensionalen Array - Codeoptimierung möglich?

Mehrdimensionalen Array - Codeoptimierung möglich? | PSD-Tutorials.de

Erstellt von koma05, 11.06.2011.

  1. koma05

    koma05 Aktives Mitglied

    Dabei seit:
    18.12.2008
    Beiträge:
    297
    Geschlecht:
    männlich
    Mehrdimensionalen Array - Codeoptimierung möglich?
    hallo.
    für eine geburtstagsliste habe ich ein Mehrdimensionalen Array verwedendet:

    im code wird nun der wochentag (1-7) ermittelt wann ein user seinen gebtag hat.
    PHP:
    1. $wotag = date("D", mktime(0,0,0, $exp[1], $exp[2], date('Y', time()))
    daraufhin wird in einer case-anweisung der user im array entsprechend abgespeichert:
    PHP:
    1. switch ($wotag)
    2.                 {
    3. case 1 : $wotage['Montag'][] = name...
    4. case 2 : $wotage['Dienstag'][] = name...
    5. case 3 : $wotage['Mittwoch'][] = name...
    6. ...
    7. case 7 : $wotage['Sonntag'][] = name...
    8. }
    zum schluss die testausgabe. es werden die user von montag bis sonntag der reihe nach ausgeben:
    PHP:
    1. echo "Montag<br />";
    2. foreach ($wotage['Montag'] as $nr => $inhalt)
    3. {
    4.     echo ($nr+1)  . $inhalt;
    5. }
    6. echo "Dienstag<br />";
    7. foreach ($wotage['Dienstag'] as $nr => $inhalt)
    8. {
    9.     echo ($nr+1)  . $inhalt;
    10. }
    11. echo "Mittwoch<br />";
    12. foreach ($wotage['Mittwoch'] as $nr => $inhalt)
    13. {
    14.     echo ($nr+1)  . $inhalt;
    15. }
    16. echo "Donnerstag<br />";
    17. foreach ($wotage['Donnerstag'] as $nr => $inhalt)
    18. {
    19.     echo ($nr+1)  . $inhalt;
    20. }
    21. echo "Freitag<br />";
    22. foreach ($wotage['Freitag'] as $nr => $inhalt)
    23. {
    24.     echo ($nr+1)  . $inhalt;
    25. }
    26. echo "Samstag<br />";
    27. foreach ($wotage['Samstag'] as $nr => $inhalt)
    28. {
    29.     echo ($nr+1)  . $inhalt;
    30. }
    31. echo "Sonntag<br />";
    32. foreach ($wotage['Sonntag'] as $nr => $inhalt)
    33. {
    34.     echo ($nr+1)  . $inhalt;
    35. }
    nun meine frage bezüglich der codeoptimierung: kann man den code der case-anweisung evtl. auf eine zeile verkürzen? und kann man die testausgabe kürzen?
    es ist ja fast immer der gleiche code nur mit einem anderen name des tages...

    über optimierungsvorschläge freue ich mich
     
    #1      
  2. exo

    exo Aktives Mitglied

    Dabei seit:
    17.04.2006
    Beiträge:
    357
    Geschlecht:
    männlich
    Ort:
    Lutherstadt Wittenberg
    Software:
    Photoshop
    Kameratyp:
    Canono EOS 50D
    Mehrdimensionalen Array - Codeoptimierung möglich?
    AW: Mehrdimensionalen Array - Codeoptimierung möglich?

    Hmm habs mir mal kurz angeschaut, das einzigste was mir jetz so ganz auf die schnelle einfällt, wäre das du gleich die Wochentage als foreach-schleife durchlaufen lässt und dann quasi den key (wochentag) in eine weitere foreach (quasi die, die du jetzt alle einzeln machst) durchläufst...

    also quasi so:

    PHP:
    1. $tage = array("Montag", "Dienstag", "Mittwoch....");
    2. foreach($tage as $wochentag)
    3. {
    4. foreach($wotage[$wochentag] as $nr => $inhalt)
    5. {
    6.  echo ($nr+1) . $inhalt;
    7. }
    8. }
    9.  
     
    #2      
  3. Duddle

    Duddle Posting-Frequenz: 14µHz

    Dabei seit:
    03.02.2006
    Beiträge:
    3.864
    Geschlecht:
    männlich
    Ort:
    Dresden
    Mehrdimensionalen Array - Codeoptimierung möglich?
    AW: Mehrdimensionalen Array - Codeoptimierung möglich?

    Warum benutzt du "D" in date()? Das gibt lt. Handbuch "Mon", "Tue", ..., "Sun" - also den englischen Wochentag in 3 Buchstaben - zurück. Du willst sicher "N" (gibt 1 bis 7 zurück, 1 steht für Montag).

    Auf exos Antwort aufbauend: wenn du dann das Array einsetzt, kannst du es auch gleich für die Nutzer-Zuweisung nutzen. Dann brauchst du das switch-case nicht mehr.
    PHP:
    1.  
    2.  
    3. $wotag = date("N", mktime(0,0,0, $exp[1], $exp[2], date('Y', time()));
    4. $tage = array("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag");
    5.  
    6. //Nutzer einem Wochentag-Array zuweisen
    7. $nameWochentag = $tage[$wotag-1];
    8. $wotage[$nameWochentag][] = nutzer ...
    9.  
    10. foreach($tage as $wochentag) {
    11.     foreach($wotage[$wochentag] as $nr => $inhalt) {
    12.      echo ($nr+1) . $inhalt;
    13.     }
    14. }  
    15.  

    Duddle
     
    #3      
  4. koma05

    koma05 Aktives Mitglied

    Dabei seit:
    18.12.2008
    Beiträge:
    297
    Geschlecht:
    männlich
    Mehrdimensionalen Array - Codeoptimierung möglich?
    AW: Mehrdimensionalen Array - Codeoptimierung möglich?

    :)
    danke für eure antworten
     
    #4      
x
×
×