Autor | Zpráva | ||
---|---|---|---|
michalbroz Profil |
#1 · Zasláno: 20. 9. 2011, 15:36:19
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 |
#2 · Zasláno: 20. 9. 2011, 15:47:06
michalbroz:
porovnávej striktně se třemi rovnítky. |
||
Tori Profil |
#3 · Zasláno: 20. 9. 2011, 15:47:51 · Upravil/a: Tori
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'); 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 |
#4 · Zasláno: 20. 9. 2011, 15:48:30
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 |
#5 · Zasláno: 20. 9. 2011, 15:50:23 · Upravil/a: Euroblb
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 |
#6 · Zasláno: 20. 9. 2011, 16:07:41
Tedy to byla rychlovka. Díky moc
|
||
Časová prodleva: 13 let
|
0