[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Глюк в ПХП ?
Jo
Сравниваю две переменные как строки


$e1="2.1";
$e2="2.10";

if($e1==$e2)echo "Ravno-1";


if($e1==strval($e2))echo "Ravno-2";


Выдает равенство huh.gif Че за глюк ?



Спустя 8 минут, 24 секунды (4.09.2009 - 09:05) stepan написал(а):
А разве это должно быть не равно? ты попробуй вот такое:
echo 'a'+'b';
А для более точной проверки используй вот это(возможно оно тебе и поможет):
PHP
if ($e1 === $e2)
     echo 
'Ravno-1';

Спустя 3 минуты, 49 секунд (4.09.2009 - 09:09) Guest написал(а):
Да у меня как раз дальше и стоит проверка , которую оно проходит не правильно


$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 написал(а):
Спасибо ,так пашет , случайно заметил это rolleyes.gif

Спустя 1 час, 30 минут, 48 секунд (4.09.2009 - 10:53) sergeiss написал(а):
А надо бы не случайно, а понимать smile.gif
Поясняю, почему так происходит. При объявлении переменных они получают тип "строковые". Но перед сравнением они преобразуются в числа. Потому что, как правильно заметил FatCat, сравнение нестрогое, и потому, что они содержат символьное представление чисел. Если ты хочешь сравнить именно числа, содержащиеся в строках, то это будет правильное сравнение.
Если же сравнение строгое, то преобразований не делается, и будут сравниваться именно строки, без преобразования типов. И ты получишь правильный результат - если ты хотел именно строки сравнить.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.