Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нюансы логических выражений в php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Haron
Отправлено: 16 Ноября, 2012 - 16:36:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Июнь 2010  
Откуда: Оттуда


Помог: 5 раз(а)




Здравствуйте, обнаружил интересную вещь:

Вот собственно - есть такой код:

PHP:
скопировать код в буфер обмена
  1. $r = <любое число>;
  2. if ($r == (2 or 3))
  3. {
  4.         echo 1;
  5. }
  6. // - Выведет 1
  7.  
  8. $r = 3
  9. if ($r === (2 or 3))
  10. {
  11.         echo 1;
  12. }
  13. // - Не выведет ничего.
  14.  


Вопрос, почему так?

(Отредактировано автором: 16 Ноября, 2012 - 16:36:37)



-----
И чё?
 
 Top
EuGen Администратор
Отправлено: 16 Ноября, 2012 - 16:41:01
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




2 or 3 это будет булево true.
== есть сравнение без учета типа данных (приведение типов),
=== есть сравнение с учетом типа данных

То есть, например, если в <любое число> указать 0, то и первое условие не выполнится. Ну а так - да, любое отличное от нуля число будет при приведении к булевому типу равно true.
По поводу второго же сравнения - и так понятно, 3 (и какое угодно число) не будет равно с учетом типа данных true.
Посмотрите таблицу приведения типов - все станет понятно.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Haron
Отправлено: 17 Ноября, 2012 - 07:13:28
Post Id



Частый гость


Покинул форум
Сообщений всего: 197
Дата рег-ции: Июнь 2010  
Откуда: Оттуда


Помог: 5 раз(а)




Посмотрел таблицу. Да, динамическая типизация - это очень удобно и интуитивно понятно...

(array() == null) = true - вот это удивило

("php" == 0) = true, но ("php" === 0) = false - а это какбе символизирует суть языка для непосвящённых, да Улыбка. (При взгляде со стороны - php это ноль, но при ближайшем рассмотрении - уже не ноль)

(Отредактировано автором: 17 Ноября, 2012 - 07:24:48)



-----
И чё?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB