Autor Zpráva
michalbroz
Profil
Narazil jsem teď na takovou, podle mne, zvláštnost. Možná něco přehlížím, ale nechápu proč php vyhodnocuje první a poslední variantu jako pravdivou. Poradí mi někdo nebo je to chyba? Předem díky

<?php
$t1 = '3abcdef';
if ( $t1 == 3 ) {
echo $t1.' tohle projde';
}

$t2 = '33';
if ($t2 == 3 ) {
echo $t2.' tohle neprojde';
}

$t3 = '3abcdef3';
if ($t3 == 3 ) {
echo $t3.' tohle projde';
}
?>
panther
Profil
michalbroz:
porovnávej striktně se třemi rovnítky.
Tori
Profil
michalbroz:
Porovnáváte to s číslem, takže se ten řetězec nejdřív přetypuje na číslo (koukněte, co vám vrátí např.
echo "3abcdef = ".intval('3abcdef'); 
Jestli chcete aby to neprošlo, porovnávejte řetězce:
if ( $t1 == "3") { 

Viz manuál: „If you compare a number with a string or the comparison involves numerical strings, then each string is converted to a number and the comparison performed numerically. These rules also apply to the switch statement. The type conversion does not take place when the comparison is === or !== as this involves comparing the type as well as the value.
edit: ..kdo bude dřív :)
Michal666
Profil
Podle mě si ty promměné převede na INT, stačí když změníte podmínku na: $t1 == '3' nebo na $t1 === 3
Euroblb
Profil
porovnáváš proměnné různého typu, integer/string (čislo/řetězec).
Pročti si článek na linuxsoftu a případně přetypování proměnných

hm tak jsem byl poslední..
michalbroz
Profil
Tedy to byla rychlovka. Díky moc

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