$e1="2.1";
$e2="2.10";
if($e1==$e2)echo "Ravno-1";
if($e1==strval($e2))echo "Ravno-2";
Выдает равенство Че за глюк ?
Спустя 8 минут, 24 секунды (4.09.2009 - 09:05) stepan написал(а):
А разве это должно быть не равно? ты попробуй вот такое:
echo 'a'+'b';
А для более точной проверки используй вот это(возможно оно тебе и поможет):
echo 'a'+'b';
А для более точной проверки используй вот это(возможно оно тебе и поможет):
PHP |
if ($e1 === $e2) |
Спустя 3 минуты, 49 секунд (4.09.2009 - 09:09) Guest написал(а):
Да у меня как раз дальше и стоит проверка , которую оно проходит не правильно
$main="2.1";
$v="2.10";
if($main!=$v)
{
blabla;
}
как строковые переменные они не же не равны , как косяк побороть ?
$main="2.1";
$v="2.10";
if($main!=$v)
{
blabla;
}
как строковые переменные они не же не равны , как косяк побороть ?
Спустя 6 минут, 45 секунд (4.09.2009 - 09:16) FatCat написал(а):
Цитата (Guest @ 4.09.2009 - 10:09) |
if($main!=$v) { blabla; } |
Вместо "!=" используй точное сравнение "!==" - и будет не равно.
При нестрогом сравнении не возникает точного соблюдения условий.
Спустя 6 минут, 47 секунд (4.09.2009 - 09:22) Guest написал(а):
Спасибо ,так пашет , случайно заметил это
Спустя 1 час, 30 минут, 48 секунд (4.09.2009 - 10:53) sergeiss написал(а):
А надо бы не случайно, а понимать
Поясняю, почему так происходит. При объявлении переменных они получают тип "строковые". Но перед сравнением они преобразуются в числа. Потому что, как правильно заметил FatCat, сравнение нестрогое, и потому, что они содержат символьное представление чисел. Если ты хочешь сравнить именно числа, содержащиеся в строках, то это будет правильное сравнение.
Если же сравнение строгое, то преобразований не делается, и будут сравниваться именно строки, без преобразования типов. И ты получишь правильный результат - если ты хотел именно строки сравнить.
Поясняю, почему так происходит. При объявлении переменных они получают тип "строковые". Но перед сравнением они преобразуются в числа. Потому что, как правильно заметил FatCat, сравнение нестрогое, и потому, что они содержат символьное представление чисел. Если ты хочешь сравнить именно числа, содержащиеся в строках, то это будет правильное сравнение.
Если же сравнение строгое, то преобразований не делается, и будут сравниваться именно строки, без преобразования типов. И ты получишь правильный результат - если ты хотел именно строки сравнить.