Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „Mehrdimensionalen Array - Codeoptimierung möglich?“

koma05

Aktives Mitglied

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:
$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:
switch ($wotag)
                {
case 1 : $wotage['Montag'][] = name...
case 2 : $wotage['Dienstag'][] = name...
case 3 : $wotage['Mittwoch'][] = name...
...
case 7 : $wotage['Sonntag'][] = name...
}
zum schluss die testausgabe. es werden die user von montag bis sonntag der reihe nach ausgeben:
PHP:
echo "Montag<br />";
foreach ($wotage['Montag'] as $nr => $inhalt)
{
    echo ($nr+1)  . $inhalt;
}
echo "Dienstag<br />";
foreach ($wotage['Dienstag'] as $nr => $inhalt)
{
    echo ($nr+1)  . $inhalt;
}
echo "Mittwoch<br />";
foreach ($wotage['Mittwoch'] as $nr => $inhalt)
{
    echo ($nr+1)  . $inhalt;
}
echo "Donnerstag<br />";
foreach ($wotage['Donnerstag'] as $nr => $inhalt)
{
    echo ($nr+1)  . $inhalt;
}
echo "Freitag<br />";
foreach ($wotage['Freitag'] as $nr => $inhalt)
{
    echo ($nr+1)  . $inhalt;
}
echo "Samstag<br />";
foreach ($wotage['Samstag'] as $nr => $inhalt)
{
    echo ($nr+1)  . $inhalt;
}
echo "Sonntag<br />";
foreach ($wotage['Sonntag'] as $nr => $inhalt)
{
    echo ($nr+1)  . $inhalt;
}
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
 

exo

Aktives Mitglied

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:
$tage = array("Montag", "Dienstag", "Mittwoch....");
foreach($tage as $wochentag)
{
foreach($wotage[$wochentag] as $nr => $inhalt)
{
 echo ($nr+1) . $inhalt;
}
}
 

Duddle

Posting-Frequenz: 14µHz

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:
$wotag = date("N", mktime(0,0,0, $exp[1], $exp[2], date('Y', time()));
$tage = array("Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag");

//Nutzer einem Wochentag-Array zuweisen
$nameWochentag = $tage[$wotag-1];
$wotage[$nameWochentag][] = nutzer ... 

foreach($tage as $wochentag) {
    foreach($wotage[$wochentag] as $nr => $inhalt) {
     echo ($nr+1) . $inhalt;
    }
}


Duddle
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
175.158
Beiträge
2.581.880
Mitglieder
67.225
Neuestes Mitglied
Petra
Oben