zahlenformat auf 2 stellen festlegen
Jan K.
- php
0 Hopsel0 Jan
0 Matze0 Matze
0 seth_not@home
Hallo zusammen,
kann ich das zahlenformat meiner (zähl)varaiblen irgendwie auf zwei stellen festlegen? Ansonsten muss ich wie ich es jetzt gemacht habe alle ausnahmefälle 01-09 nochmal extra aufführen. Könnte ich $i vom aktuellen einstelligen zahlenformat 1-9..10 usw. auch auf das das format 01-09 umstellen?
$monat= date("m");
$jahr= date("y");
switch($_GET[action]) {
case "01": $monat1="January"; break;
case "02": $monat1="February"; break;
case "03": $monat1="March"; break;
case "04": $monat1="April"; break;
case "05": $monat1="May"; break;
case "06": $monat1="June"; break;
case "07": $monat1="July"; break;
case "08": $monat1="August"; break;
case "09": $monat1="September"; break;
case "10": $monat1="October"; break;
case "11": $monat1="November"; break;
case "12": $monat1="December"; break;
}
if ( file_exists("$jahr/$monat1/01.ip.txt") ) {echo "<b>01</b>";}
if ( file_exists("$jahr/$monat1/02.ip.txt") ) {echo "<b>02</b>";}
if ( file_exists("$jahr/$monat1/03.ip.txt") ) {echo "<b>02</b>";}
if ( file_exists("$jahr/$monat1/04.ip.txt") ) {echo "<b>04</b>";}
if ( file_exists("$jahr/$monat1/05.ip.txt") ) {echo "<b>05</b>";}
if ( file_exists("$jahr/$monat1/06.ip.txt") ) {echo "<b>06</b>";}
if ( file_exists("$jahr/$monat1/07.ip.txt") ) {echo "<b>07</b>";}
if ( file_exists("$jahr/$monat1/08.ip.txt") ) {echo "<b>08</b>";}
if ( file_exists("$jahr/$monat1/09.ip.txt") ) {echo "<b>09</b>";}
for ($i=0;$i<=31;$i++) {
if ( file_exists("$jahr/$monat1/$i.ip.txt") ) {echo "<b>$i</b>";}
}
evtl. gibs da ja auch eine elegantere lösung.
Gruß,
Jan
Hi Jan!
Könnte ich $i vom aktuellen einstelligen zahlenformat 1-9..10 usw. auch auf das das format 01-09 umstellen?
$monat= date("m");
Wozu das?
$jahr= date("y");
switch($_GET[action]) {
case "01": $monat1="January"; break;
case "02": $monat1="February"; break;
case "03": $monat1="March"; break;
case "04": $monat1="April"; break;
case "05": $monat1="May"; break;
case "06": $monat1="June"; break;
case "07": $monat1="July"; break;
case "08": $monat1="August"; break;
case "09": $monat1="September"; break;
case "10": $monat1="October"; break;
case "11": $monat1="November"; break;
case "12": $monat1="December"; break;
Was passiert, wenn etwas anderes per GET übergeben wird?
}
if ( file_exists("$jahr/$monat1/01.ip.txt") ) {echo "<b>01</b>";}
if ( file_exists("$jahr/$monat1/02.ip.txt") ) {echo "<b>02</b>";}
if ( file_exists("$jahr/$monat1/03.ip.txt") ) {echo "<b>02</b>";}
if ( file_exists("$jahr/$monat1/04.ip.txt") ) {echo "<b>04</b>";}
if ( file_exists("$jahr/$monat1/05.ip.txt") ) {echo "<b>05</b>";}
if ( file_exists("$jahr/$monat1/06.ip.txt") ) {echo "<b>06</b>";}
if ( file_exists("$jahr/$monat1/07.ip.txt") ) {echo "<b>07</b>";}
if ( file_exists("$jahr/$monat1/08.ip.txt") ) {echo "<b>08</b>";}
if ( file_exists("$jahr/$monat1/09.ip.txt") ) {echo "<b>09</b>";}
for ($i=0;$i<=31;$i++) {
if ( file_exists("$jahr/$monat1/$i.ip.txt") ) {echo "<b>$i</b>";}
}
Und was bezweckst du hiermit? Erst lässt du von 01 bis 09 ausgeben und dann nochmal von 0 bis 31.
Wenn du überlegst, wirst du auch darauf kommen, warum es funktioniert und warum $i in der for-Schleife nicht mit 0 initialisiert zu werden braucht.
MfG H☼psel
Danke an die viele lösungsansätze,
sprintf ist genau das gewesen was ich dazu gebraucht habe, vielen dank!
$i=0;
while ( $i <= 31 ) {
$i=sprintf("%02d",$i);
if ( file_exists("$jahr/$monat1/$i.ip.txt") ) {echo "<td><a href='statistic.php?datee=$i'target='_self'>$i</a></td>";}
$i++;
}
Gruß,
Jan
Hallo!
Vielleicht hilft dir das weiter.
Für die Monate:
<?PHP
$monat = 1;
do {
if($mont<10)echo "0";
echo $monat;
$mont++;
} while ($mont<13);
?>
Für die Tage:
<?PHP
$tag = 1;
do {
if($tach<10)echo "0";
echo $tag;
$tach++;
} while ($tag<32);
?>
Ich habe allerdings auch nicht richtig verstanden was du erreichen willst.
Grüße, Matze
Hallo nochmal!
Oh oh oh die Tippfehler...
Die Variablen müssten natürlich immer $monat und $tag heißen,
nicht $mont oder $tach.
Vielleicht bringt dir aber auch das mehr:
$monat = str_pad($monat, 2, "0", STR_PAD_LEFT);
Grüße, Matze
gudn tach!
Vielleicht bringt dir aber auch das mehr:
$monat = str_pad($monat, 2, "0", STR_PAD_LEFT);
oder man verwendet ganz einfach, wie H☼psel bereits sagte, das konventionelle sprintf!
zitat aus dem php-manual (en):
Example 7. sprintf(): zero-padded integers
$isodate = sprintf("%04d-%02d-%02d", $year, $month, $day);
prost
seth
gudn tach!
kann ich das zahlenformat meiner (zähl)varaiblen irgendwie auf zwei stellen festlegen?
hat H☼psel bereits beantwortet.
switch($_GET[action]) {
case "01": $monat1="January"; break;
case "02": $monat1="February"; break;
case "03": $monat1="March"; break;
case "04": $monat1="April"; break;
case "05": $monat1="May"; break;
case "06": $monat1="June"; break;
case "07": $monat1="July"; break;
case "08": $monat1="August"; break;
case "09": $monat1="September"; break;
case "10": $monat1="October"; break;
case "11": $monat1="November"; break;
case "12": $monat1="December"; break;
das brauchst du nicht tun. das kann date selbst. schau dir den format character 'F' mal genauer an.
und pruefe vorher den uebergabeparameter auf seine gueltigkeit, z.b. per regexp /^(?:0[0-9]|1[0-2])$/
for ($i=0;$i<=31;$i++)
^^ besser: format character 't' von date
if ( file_exists("$jahr/$monat1/$i.ip.txt") ) {echo "<b>$i</b>";}
hier brauchst du bloss die vorkommnisse von $i durch die passenden aufrufe von sprintf zu ersetzen.
prost
seth