Im letzten Beitrag zu PHP habe ich den Aufbau der Arrays beschrieben. Um das Verständnis der Arrays und deren Einsatz besser zu erklären, werde ich hier einige einfache Beispiele liefern.
Als erstes stelle ich die Funktion date() vor. Diese Funktion gibt eine formatierte Zeitangabe zurück. Je nach dem welchen Platzhalter bzw. Formatierschalter man einsetzt bekommt man verschiedene Ausgaben:
<?php
echo date("Y");
?>
Die Ausgabe wäre: 2004. Eine Auflistung dieser "Schalter" bekommt man u. a. hier und hier. Hier ein weiteres Beispiel:
<?php
echo "Heute ist " . date("l") . ", der " . date("d. F Y");
?>
Die Ausgabe wäre: Heute ist Tuesday, der 20. April 2004
An sich nicht falsch, allerdings wäre es schöner wenn die Ausgabe deutschsprachig wäre. Hierbei kommen die Arrays zum Einsatz.
<?php
$wochentag=array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
// Wochentage
$monat=array("January"=>"Januar", "February"=>"Februar", "March"=>"März", "April"=>"April", "May"=>"Mai", "June"=>"Juni", "July"=>"Juli", "August"=>"August", "September"=>"September", "October"=>"Oktober", "November"=>"November", "December"=>"Dezember");
// Monatsnamen
echo "Heute ist " . $wochentag[date("w")] . ", der " . date("d. ") . $monat[date("F")]. " " . date("Y");
?>
Die Ausgabe wäre: Heute ist Dienstag, der 20. April 2004
Nun zu der Erklärung. Als erstes habe ich Wochentage in einem Array (Kurzschreibweise) untergebracht. Sonntag hat einen Indexwert von 0 und Samstag einen Indexwert von 6. Das ist gut, denn date("w") (hierbei nicht, wie ich, die Anführungszeichen vergessen *g*) gibt mir Zahlen von 0-6 raus (Sonntag bis Samstag).
Als zweites habe ich ein assoziativen Array mit Monatsnamen gemacht, denn date("F") gibt engische Monatsnamen raus. Es gäbe eine weitere Möglichkeit das Monatsnamen-Problem zu lösen:
<?php
$monat=array(); //Anmerkung von Garvin
$monat[1]="Januar";
$monat[2]="Februar";
$monat[3]="März";
$monat[4]="April";
$monat[5]="Mai";
$monat[6]="Juni";
$monat[7]="Juli";
$monat[8]="August";
$monat[9]="September";
$monat[10]="Oktober";
$monat[11]="November";
$monat[12]="Dezember";
echo $monat[date("n")];
?>
Hierbei musste ich die Indexierung selber vornehmen, da date("n") Werte zwischen 1-12 liefert. Mir ist schon irgendwie klar, daß es für die deutschsprachige Datumsasugabe bestimmt eine elegantere Lössung gibt.
Die Funktion count() erlaubt uns die Array-Elemente zu zählen. Hier ein Beispiel:
<?php
$wochentag=array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag");
// Wochentage
$monat=array("January"=>"Januar", "February"=>"Februar", "March"=>"März", "April"=>"April", "May"=>"Mai", "June"=>"Juni", "July"=>"Juli", "August"=>"August", "September"=>"September", "October"=>"Oktober", "November"=>"November", "December"=>"Dezember");
// Monatsnamen
echo "Heute ist " . $wochentag[date("w")] . ", der " . date("d. ") . $monat[date("F")]. " " . date("Y") . "<br />\n";
echo "Die Woche hat " . count($wochentag) . " Tage und das Jahr hat " . count($monat) . " Monate";
?>
Die Ausgabe würde so aussehen:
Heute ist Dienstag, der 20. April 2004
Die Woche hat 7 Tage und das Jahr hat 12 Monate
@Garvin &Martin, evtl. könntet ihr mir an diesen Beispielen erklären ob eher " oder ' angebrachter wären.
Hinweis:
250+ Professionelle WordPress-Themes
Premium WordPress-Themes, 24 davon mit deutschem Support
Tut mir Leid, aber die Kommentar-Funktion ist momentan deaktiviert.
1. – C-blog - Bock auf Blog » Artikel aus Peruns Blog III
Pingback vom 02. December 2004 um 05:15
[...] g. Zum Abschluss der kleinen "Reihe" gibt es heute drei Beiträge zu PHP. 1) PHP-lernen 7.1: deutschsprachiges Datum Im letzten Beitrag zu PHP [...]
2. – Garvin Hicking
Kommentar vom 21. April 2004 um 12:35
In den obigen Beispiel haben sich leider einige Fehler eingeschlichen:
echo date(Y);
- sollte heißen (mit anführungszeichen):
echo date('Y');
echo "Heute ist " . date("l"); . ", der " . date("d. F Y");
- sollte heißen (ohne zusätzliches semikolon):
echo "Heute ist " . date("l") . ", der " . date("d. F Y");
Der Hinweis auf eine "irgendwie deutsche Ausgabe" ließe sich wie folgt verwirklichen:
setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
echo 'Heute ist ' . strftime('%A, der %d.%B %Y');
Wobei setlocale je nach PHP-Version eventuell leicht anders aussehen kann. Noch schöner wäre übrigens folgende Ausgabe:
printf(
'Heute ist %s, der %s',
strftime('%A'),
strftime('%d.%B %Y')
);
denn damit kann man sich die ganze hässliche Stringconcatenation etwas sparen.
Was die Anführungszeichen angeht: Durchgängig hätten in deinen Beispielen einfache ' Anführungszeichen ausgereicht. Ich persönlich finde sie auch einfacher zu lesen, da es nur ein Strich anstelle zweier ist und so den Code nicht so verwustelt.
HTH,
Garvin.
3. – Perun
Kommentar vom 21. April 2004 um 12:52
Hi Garvin,
ich habe deine beiden Beispiele ausprobiert und bei mir funzen die nicht. Wo und wie muss ich deine Beispiele einbinden?
Zu dem Semikolon: irgendwie habe ich das Gefühl, daß WP ab und an Zeichen zufügt. Denn sonst kann ich es mir nicht erklären, da ich die längeren Beispiele aus dem Editor rauskopiere.
Als ich das erste mal diesen Beitrag abgesendet habe, hat mir WP mehr oder weniger alles zerschossen. Es sah aus wie Kraut und Rüben
4. – Martin
Kommentar vom 24. April 2004 um 02:39
Alternativ könnte man die Monate auch so anlegen:
$monat = array(1=>'Januar','Februar','März','...','Dezember');Durch das 1=> wird der Januar dem Index 1 und nicht 0 zugewiesen. Möglich sind so auch Lücken, hier als Beispiel das ganze ohne Februar:
$monat = array(1=>'Januar',3=>'März','April','...','Dezember');