Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почему нельзя сравнивать текстовые переменные оператором if ?
 
 автор: Владимир55   (24.07.2007 в 19:03)   письмо автору
 
 


$flag = "new";
$out  = "июль";

        if ($out == $flag);
    {
            echo "<br>Я здесь! <br>";
        }

Читаем: Я здесь!
А почему так?

   
 
 автор: Unkind   (24.07.2007 в 19:05)   письмо автору
 
   для: Владимир55   (24.07.2007 в 19:03)
 

А тут if() не при чем. Он уже своё дело сделал, Вы поставили ";".
"Я здесь" просто следует дальше по сценарию.

   
 
 автор: ШИМ   (24.07.2007 в 19:30)   письмо автору
 
   для: Unkind   (24.07.2007 в 19:05)
 

не нужно ставить точку с запятой

   
 
 автор: Владимир55   (24.07.2007 в 19:32)   письмо автору
 
   для: Unkind   (24.07.2007 в 19:05)
 

Точно! Спасибо!

Получается, что и без оператора strcmp можно установить идентичность/неидентичность текстовых переменных?

   
 
 автор: Unkind   (24.07.2007 в 19:36)   письмо автору
 
   для: Владимир55   (24.07.2007 в 19:32)
 

Оператора "strcmp" в PHP не существует.

Можно. Нужно. Не забудьте записать...

   
 
 автор: Владимир55   (24.07.2007 в 20:00)   письмо автору
 
   для: Unkind   (24.07.2007 в 19:36)
 

Записал уже. Ну, конечно же, речь о функции strcmp

   
 
 автор: Trianon   (24.07.2007 в 19:38)   письмо автору
 
   для: Владимир55   (24.07.2007 в 19:32)
 

эта функция нужна лишь затем, чтобы определить порядок
(равны / по алфавиту раньше / по алфавиту позже)

   
 
 автор: BIOS   (24.07.2007 в 20:29)   письмо автору
 
   для: Владимир55   (24.07.2007 в 19:03)
 

Только лучше использовать строгое равенство - "==="

   
 
 автор: Unkind   (24.07.2007 в 21:00)   письмо автору
 
   для: BIOS   (24.07.2007 в 20:29)
 

Только лучше использовать строгое равенство
Расскажите почему Вы так решили.

   
 
 автор: ШИМ   (24.07.2007 в 21:31)   письмо автору
 
   для: Unkind   (24.07.2007 в 21:00)
 

По моему это === ИДЕНТИЧНОСТЬ, т.е. учитивается и регистр, точно не помню

   
 
 автор: Unkind   (24.07.2007 в 21:35)   письмо автору
 
   для: ШИМ   (24.07.2007 в 21:31)
 

точно не помню
Ну раз не помните, так загляните в мануал. Нежелательно делать такие предположения.

   
 
 автор: ШИМ   (25.07.2007 в 16:29)   письмо автору
 
   для: Unkind   (24.07.2007 в 21:35)
 

Я сам вообще, сторонник того что "ЕСЛИ НЕ ЗНАЕШ, НЕ ГОВОРИ", незнаю что на меня нашло, это я вообще перепутал, с типами, извините кого ввел в заблуждение

   
 
 автор: Петр   (26.07.2007 в 11:23)   письмо автору
 
   для: ШИМ   (24.07.2007 в 21:31)
 

Оператор === сравниват значение и типы переменных
Например попробуйте:

<?php
$a 
123// число;
$b '123'// текст;;
// ;
if ($a===$b) {
 echo 
'1';
}
// ;
if ($a==$b) {
 echo 
'2';
}
?>

   
 
 автор: cheops   (25.07.2007 в 12:18)   письмо автору
 
   для: BIOS   (24.07.2007 в 20:29)
 

Эквивалентность требуется когда автоматическое приведение "" и 0 к false мешает корректному сравнению. В строках, если речь идёт не о "" можно использовать как ==, так и ===. Однако, использование === настраивает читающего на то, что у вас один из операндов будет 0, "" или false и это имеет значение. Поэтому здесь как раз лучше использовать классический оператор равенства ==.

   
 
 автор: bronenos   (25.07.2007 в 15:29)   письмо автору
 
   для: cheops   (25.07.2007 в 12:18)
 

вот почему strpos не возвращает -1 в случае чего
лучше strpos(...) < 0 чем strpos(...) === false, не находите?

   
 
 автор: Unkind   (25.07.2007 в 15:46)   письмо автору
 
   для: bronenos   (25.07.2007 в 15:29)
 

Казнить нельзя помиловать. Вы имели ввиду, лучше бы strpos() возвращала -1 в том случае, если подстрока не найдена? И чем лучше?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования