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.SU

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


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

> Без описания
РНРШНИК
Отправлено: 08 Апреля, 2012 - 17:56:11
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2012  


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




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.     $varInteger = 0;
  4.     $varString  = 'sg546g';
  5.    
  6.     if( $varInteger == $varString )
  7.     {
  8.         die('условие выполнено');
  9.     }
  10.     die('условие не выполнено');
  11.  
  12. ?>


Вопрос: почему условие здесь срабатывает?


Отредактировано модератором: LIME, 08 Апреля, 2012 - 18:15:03
 
 Top
webmonstor
Отправлено: 08 Апреля, 2012 - 18:03:56
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Март 2012  
Откуда: Иркутск


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




РНРШНИК пишет:
<?php

$varInteger = 0;
$varString = 'sg546g';

if( $varInteger == $varString )
{
die('условие выполнено');
}
die('условие не выполнено');

?>

Вопрос: почему условие здесь срабатывает?

всмысле
 
 Top
РНРШНИК
Отправлено: 08 Апреля, 2012 - 18:08:52
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2012  


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




webmonstor пишет:
всмысле

в прямом смысле: почему условие в приведенном выше коде выполняется?
 
 Top
Мелкий Супермодератор
Отправлено: 08 Апреля, 2012 - 18:09:35
Post Id



Активный участник


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


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




Прелести приведения типов. Не ноль приводится к строке, что дало бы false в условии, а строка приводится к числу. И приводится к нулю, что в итоге даёт true.


-----
PostgreSQL DBA
 
 Top
РНРШНИК
Отправлено: 08 Апреля, 2012 - 18:15:03
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2012  


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




Мелкий пишет:
Прелести приведения типов. Не ноль приводится к строке, что дало бы false в условии, а строка приводится к числу. И приводится к нулю, что в итоге даёт true.


Интересно, а если $varString будет равным $varString = '5fghd'; (т.е. начинаться с numeric), то каков будет результат?

(Отредактировано автором: 08 Апреля, 2012 - 18:15:28)

 
 Top
OrmaJever Модератор
Отправлено: 08 Апреля, 2012 - 18:19:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




0 == 5


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Bio man
Отправлено: 08 Апреля, 2012 - 18:20:34
Post Id


Постоянный участник


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


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




РНРШНИК пишет:
то каков будет результат?
Проверь. Строка приведется к целому, то есть 5.
 
 Top
Мелкий Супермодератор
Отправлено: 08 Апреля, 2012 - 18:21:15
Post Id



Активный участник


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


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




РНРШНИК пишет:
(т.е. начинаться с numeric)

Вот с какого числа начинается - к тому и будет приведено, а с первого не числа - отброшено. Потом сравнение двух чисел без лишней магии.


-----
PostgreSQL DBA
 
 Top
РНРШНИК
Отправлено: 08 Апреля, 2012 - 18:33:04
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2012  


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




ВЕК ЖИВИ, ВЕК УЧИСЬ. СПАСИБО ВСЕМ ЗА ОТВЕТЫ!
 
 Top
LIME
Отправлено: 08 Апреля, 2012 - 19:04:36
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


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




РНРШНИК а так?
PHP:
скопировать код в буфер обмена
  1.  if( $varInteger === $varString )
 
 Top
РНРШНИК
Отправлено: 08 Апреля, 2012 - 20:30:56
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Апр. 2012  


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




LIME пишет:
РНРШНИК а так?
PHP:
скопировать код в буфер обмена
  1.  if( $varInteger === $varString )

а так всё ясно: типы разные - условие не выполнится, однако меня интересовал вопрос неявного приведения типов, ответ на который я получил весьма полноценно. Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB