Autor Zpráva
jan99
Profil *
Ahoj, vsiml jsem si ze mi php vraci spatna data:

<?php
$unix = array('1293861600','1294466393','1294552792','1294639191');
$dny = array(01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31);

	foreach($unix as $z){
		$den = date('d',$z);
		var_dump($den);
		var_dump(in_array($den, $dny));
	}
?>


Vysledek:

string '01' (length=2)

boolean true

string '07' (length=2)

boolean true

string '08' (length=2)

boolean false

string '09' (length=2)

boolean false


Je to bug nebo proc 08 a 09 vraci false?? Jine cisla funguji (01,02, .. 07, .. 09 ..)!
Jde stim neco delat?

Diky
Aleš Janda
Profil
Celá čísla začínající nulou je zápis v osmičkové soustavě. Zkusil jsem si, že nesmyslný zápis 08 a 09 PHP vezme prostě jako 0, takže je pak jasné, že skutečná 8 a 9 v poli není.

Tenhle osmičkový zápis je zdrojem častých chyb nejen v PHP.
jan99
Profil *
Aleš Janda:
Aha, člověk se má pořád co učit.. Díky
Nox
Profil
Proto u
intval
používat ten nepovinný argument $base (nastavit na 10), aby intval('09') nevyšlo 11

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0