strtotime in foreach Schleife
johnny22
- php
Hallo Leute!
Vielleicht kann mir bitte mal kurz wer helfen.
Bei mir funktioniert die strtotime Funktion in Verbindung mit der foreach Schleife nicht.
Ich möchte für alle Daten des Arrays den Timestamp berechnen.
greets john
------------------------------------------------
$von = array(
"11-13-2003",
"01-08-2004",
"02-12-2004",
"03-18-2004",
"05-06-2004",
"06-17-2004",
"08-19-2004",
"09-18-2004",
"10-14-2004",
"11-11-2004",
);
foreach ($von as $value){
strtotime($value);
echo "$value<br>";
}
------------------------------------------------
Hello,
Vielleicht kann mir bitte mal kurz wer helfen.
Aber nur kurz ;-)
Bei mir funktioniert die strtotime Funktion in Verbindung mit der foreach Schleife nicht.
--------
$von = array(
"11-13-2003",
"01-08-2004",
"02-12-2004",
"03-18-2004",
"05-06-2004",
"06-17-2004",
"08-19-2004",
"09-18-2004",
"10-14-2004",
"11-11-2004",
);foreach ($von as $value)
{
$timestamp=strtotime($value);
echo "$timestamp<br>";
}
Schau Dir mal das unterstrichene Wort an... dämmerts?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
$von = array(
"11-13-2003",
"01-08-2004",
"02-12-2004",
"03-18-2004",
"05-06-2004",
"06-17-2004",
"08-19-2004",
"09-18-2004",
"10-14-2004",
"11-11-2004",
);foreach ($von as $value)
{
$timestamp=strtotime($value);
echo "$timestamp<br>";
}
naja... ich hätte es so gemacht
foreach ($von as $value) print strtotime($value).'<br>';
ps.
ich meine irgendwo mal gelesen zu haben, dass man das so
foreach ($von as $value)
{
$timestamp=strtotime($value);
echo "$timestamp<br>";
}
nicht schreiben soll, sondern so
foreach ($von as $value){
$timestamp=strtotime($value);
echo "$timestamp<br>";
}
Hallo Badboy46,
ich meine, daß das einer der unübersichtlichsten Möglichkeiten ist - ich meine auch im archiv mal einen sehr interessanten Beitrag gefunden zu haben, der die Verwendung von Kommentaren und Leerräumen fundiert als irrelevat für die geschwindigkeit des Steuerflusses beschreibt. Meine ich nur :)
foreach ($von as $value){
$timestamp=strtotime($value);
echo "$timestamp<br>";
}
Gruß aus Berlin!
eddi
Hallo,
ich meine, daß das einer der unübersichtlichsten Möglichkeiten ist - ich meine auch im archiv mal einen sehr interessanten Beitrag gefunden zu haben, der die Verwendung von Kommentaren und Leerräumen fundiert als irrelevat für die geschwindigkeit des Steuerflusses beschreibt. Meine ich nur :)
foreach ($von as $value){
$timestamp=strtotime($value);
echo "$timestamp<br>";
}
mir geht es ja jetzt nicht um diese eine Zeile ;-)
diese Art finde ich aber übersichtlicher, als wenn man die öffnende Klammer eien Zeile tiefer packt
ps. ich persönlich würde jedoch foreach ($von as $value) print strtotime($value).'<br>'; nehmen
man kann sich auch zu tode Klammern ;-)
ich kenne jemanden, der setzt auch überall Klammern... wo es nur geht...
wenn man nun einmal vergessen hat eine Klammer nicht zu öffnen, oder eine offene Klammer nicht zu schliessen...
und die PHP-Fehlermeldung... die Letzte Zeile vom Script anzeigt... dann ist das Geschrei gross ^^
ich hatte bis jetzt auch 1mal ein Klapper Problem...
da hatte ich auch wie so'n wilder Klammern gesetzt...
Re:
mir geht es ja jetzt nicht um diese eine Zeile ;-)
diese Art finde ich aber übersichtlicher, als wenn man die öffnende Klammer eien Zeile tiefer packtps. ich persönlich würde jedoch foreach ($von as $value) print strtotime($value).'<br>'; nehmen
man kann sich auch zu tode Klammern ;-)
Das denke ich, warscheinlich, wie Du auch: Es ist Geschmackssache und über Geschmack läßt sich zwar -, man sollte nur nicht drüber streiten ;)
ich kenne jemanden, der setzt auch überall Klammern... wo es nur geht...
wenn man nun einmal vergessen hat eine Klammer nicht zu öffnen, oder eine offene Klammer nicht zu schliessen...
Ich bin ganz überglücklich über das simple Tool "kate", was mich da freundlicherweise mit highlightcolor unterstützt und die klamern bem setzen des Cursors vor oder hinter einer klammer mit einer Zuordnungsfunktion unterstützt.
Im algemeinen habe ich es mir angewöhnt, wenn ich das Rad wieder neu beginne zu erfinden (also vor einer leeren Datei sitze), immer aller klammer auszuformulieren, da ich doch zuoft zwischenzeitlich mit print_r() debuge.
Da ist das dann doch recht hilfreich, nicht in jeder if/elseif/else-Anweisung erst rumzuklammern. Dabei habe ich wirklich schon mehrfach Zeit verschwendet, um die frisch gesetzten Klammern wieder verschwinden zu lassen.
und die PHP-Fehlermeldung... die Letzte Zeile vom Script anzeigt... dann ist das Geschrei gross ^^
}
}
}
}
}
Meistens ist Das dann mein Erscheinungsbild am Ende von Funktionenn und ich kann sie so sehr sehr gur zu den einzelene Ableufen zuordnen.
Gruß aus Berlin!
eddi
Hallo,
}
}
}
}
}Meistens ist Das dann mein Erscheinungsbild am Ende von Funktionenn und ich kann sie so sehr sehr gur zu den einzelene Ableufen zuordnen.
bei mein Kumpel sah das ungefähr so aus
{ } }
{}} }
}
}
}
}{} {
}
wofür er die unsinnigen Klammern gesetzt hat {} konnte er mir nicht wirklich erklären... er meinte, da könnte man ja mal irgendwas reinschreiben *kopfschüttel*
Hallo
}
}
}
}
}Meistens ist Das dann mein Erscheinungsbild am Ende von Funktionenn und ich kann sie so sehr sehr gur zu den einzelene Ableufen zuordnen.
Während der Entwicklung sieht's bei mir ähnlich aus:
} // Ende: for ($a=0;$a<count($bla);$a++)
} // Ende: if ($ab<12) (else)
} // usw.
} // usf.
Wenn das Skript dann fertig ist, wird eine Sicherungskopie angefertigt,
und das Einsatzskript derartiger Kommentare beraubt. Spätere Änderungen
erfolgen in der Sicherungskopie.
Tschö, Auge
Hello lieber Badboy,
$von = array(
"11-13-2003",
"01-08-2004",
"02-12-2004",
"03-18-2004",
"05-06-2004",
"06-17-2004",
"08-19-2004",
"09-18-2004",
"10-14-2004",
"11-11-2004",
);foreach ($von as $value)
{
$timestamp=strtotime($value);
echo "$timestamp<br>";
}naja... ich hätte es so gemacht
foreach ($von as $value) print strtotime($value).'<br>';
Das ist fein, dass du die Chaosschreibweise beherrschst. Aber zum Aufzeigen von Fehlern ist sie absolut nicht geeignet. Außerdem ist strtotime() in der Lage -1 zurückzugeben, und das würde ich dann nicht ausgeben wollen. Wie willst Du das dann vermeiden, ohne die Funktion ein zweites Mal aufzurufen?
Hier ging es in erster Linie darum, johnny22 darauf aufmarksam zu machen dass FUNKTIONEN überlicherweise einen Rückgabewert und Argumente haben.
Rückgabewert = funktion(Argument 1,...,Argument n)
Ausnahmen bestätigen die Regel. ;-)
Ich bitte Dich deshalb hier mal ganz lieb, die Tips doch nur dann zu "korrigieren", wenn sie Fehler enthalten, oder wirklich nicht zur besseren Übersicht beitragen.
Die von mir gewählte Schreibweise
foreach ($von as $value) ## Für jeden value aus von
{
$timestamp=strtotime($value); ## timestamp bestimmen
if($timestamp != (-1)) ## Rückgabewert prüfen
{
echo "$timestamp<br>"; ## und ausgeben, wenn kein Fehlöer vorliegt
}
else ## sonst Fehlermeldungen ausgeben
{
echo "Datum <strong>$value</strong> ist fehlerhaft<br />";
}
}
gehört auch dazu. Sie weicht in Bezug auf die Eröffnungsklammer bewusst vom PEAR-Standard ab. Alle anderen Empfehlungen, wie vor "IF, While, Foreach ..." immer eine Leezeile, alle Blöcke klammern, auch wenn sie nur ein Statement enthalten, keine Fehlerauswertung auslassen... sind auch Bestandteil des PEAR-Standards.
Ich bezweifle nicht, dass Deine Schreibweiwe auch funktionieren kann, aber sie trägt nicht zu leicht überschau- und kommentierbarem Code bei.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Moin!
Ausnahmen bestätigen die Regel. ;-)
Nö. Ausnahmen bekommen die Regel @:-)
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hello,
Ausnahmen bestätigen die Regel. ;-)
Nö. Ausnahmen bekommen die Regel @:-)
Wie jetzt? All others become pregnant?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Moin!
Wie jetzt? All others become pregnant?
Äh ... ich kann kein Gesellschaftsenglisch. Kannst Du mir das ins fachchinesische übersetzen?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hi fastix®,
All others become pregnant?
Kannst Du mir das ins fachchinesische übersetzen?
Aaaaah aaaaah Hui bääääh bääääh mit Betonung auf Letzerem.
Grüße,
Roland
Hallo!
Wie jetzt? All others become pregnant?
Alles eine Sache des Gehörs! Ein weltberühmter, österr., verstorbener Dirigent meinte mal zum 1. Geiger, 'der' eine Japanerin war, in prägnantem Englisch: "A little bit more pregnant please!"
Und der war überhaupt nicht taub ;-)
Beste Grüße
Viennamade
PS.: Karl Böhm war es.
Hallo,
Wie jetzt? All others become pregnant?
Alles eine Sache des Gehörs! Ein weltberühmter, österr., verstorbener Dirigent meinte mal zum 1. Geiger, 'der' eine Japanerin war, in prägnantem Englisch: "A little bit more pregnant please!"
*g*
Was hat _sie_ gemacht? Ist sie aufgestanden, hat die Beine leicht auseinander gestellt, ein Hohlkreuz gemacht, das Becken vorgestreckt, die Wangen aufgeblasen und dann gespielt?
viele Grüße
Axel
Hallo,
Die von mir gewählte Schreibweise
so sah es vorhin aber nicht aus ;-)
foreach ($von as $value) ## Für jeden value aus von
{
$timestamp=strtotime($value); ## timestamp bestimmenif($timestamp != (-1)) ## Rückgabewert prüfen
{
echo "$timestamp<br>"; ## und ausgeben, wenn kein Fehlöer vorliegt
}
else ## sonst Fehlermeldungen ausgeben
{
echo "Datum <strong>$value</strong> ist fehlerhaft<br />";
}
}
was spricht jetzt dagegen, das z.B. so zu schreiben?
foreach ($von as $value) ## Für jeden value aus von
{
$timestamp=strtotime($value); ## timestamp bestimmen
if($timestamp != (-1)) echo "$timestamp<br>"; ## Rückgabewert prüfen und ausgeben, wenn kein Fehlöer vorliegt
else echo "Datum <strong>$value</strong> ist fehlerhaft<br />"; ## sonst Fehlermeldungen ausgeben
}
bei den Rückgabewert muss ich dir Recht geben, dass das bei meiner Methode nicht so einfach wäre
naja.. ich glaub ich mach mich hier unbeliebt :-(
mktime()
http://de.php.net/manual/en/function.mktime.php
so rum sollte gehen!
Hallo John,
strtotime() geistert hier in letzter Zeit so heufig rum? Habe ich was verpasst?
Dein Datenfeld $von wird sicherlich irgendwo gebildet werden/worden sein. Also ist die einfachste Möglichkeit das Datenfeld bei der Erstellung nicht ein datumsformatierten String zukommenzulassen, sondern von vornherein ihn in Timestams zu konvertieren. Dazu bediene ich mich beispielsweise der Funktion mktime() http://de3.php.net/manual/de/function.mktime.php.
Zu Deinem Beispielcode:
$von = array(
"11-13-2003",
"01-08-2004",
"02-12-2004",
"03-18-2004",
"05-06-2004",
"06-17-2004",
"08-19-2004",
"09-18-2004",
"10-14-2004",
"11-11-2004",
);foreach ($von as $value){
$v=explode('-',$value);
if($v[0][0]=='0') $v[0]=$v[0][1];
if($v[1][0]=='0') $v[1]=$v[1][1];
echo mktime(12,0,0,$v[0],$v[1],$v[2]).'<br>';
}
Gruß aus Berlin!
eddi