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
Форумы портала PHP.SU :: Версия для печати :: Сравнение данных
Форумы портала PHP.SU » » Вопросы новичков » Сравнение данных

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

1. РНРШНИК - 08 Апреля, 2012 - 17:56:11 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.     $varInteger = 0;
  4.     $varString  = 'sg546g';
  5.    
  6.     if( $varInteger == $varString )
  7.     {
  8.         die('условие выполнено');
  9.     }
  10.     die('условие не выполнено');
  11.  
  12. ?>


Вопрос: почему условие здесь срабатывает?
2. webmonstor - 08 Апреля, 2012 - 18:03:56 - перейти к сообщению
РНРШНИК пишет:
<?php

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

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

?>

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

всмысле
3. РНРШНИК - 08 Апреля, 2012 - 18:08:52 - перейти к сообщению
webmonstor пишет:
всмысле

в прямом смысле: почему условие в приведенном выше коде выполняется?
4. Мелкий - 08 Апреля, 2012 - 18:09:35 - перейти к сообщению
Прелести приведения типов. Не ноль приводится к строке, что дало бы false в условии, а строка приводится к числу. И приводится к нулю, что в итоге даёт true.
5. РНРШНИК - 08 Апреля, 2012 - 18:15:03 - перейти к сообщению
Мелкий пишет:
Прелести приведения типов. Не ноль приводится к строке, что дало бы false в условии, а строка приводится к числу. И приводится к нулю, что в итоге даёт true.


Интересно, а если $varString будет равным $varString = '5fghd'; (т.е. начинаться с numeric), то каков будет результат?
6. OrmaJever - 08 Апреля, 2012 - 18:19:42 - перейти к сообщению
0 == 5
7. Bio man - 08 Апреля, 2012 - 18:20:34 - перейти к сообщению
РНРШНИК пишет:
то каков будет результат?
Проверь. Строка приведется к целому, то есть 5.
8. Мелкий - 08 Апреля, 2012 - 18:21:15 - перейти к сообщению
РНРШНИК пишет:
(т.е. начинаться с numeric)

Вот с какого числа начинается - к тому и будет приведено, а с первого не числа - отброшено. Потом сравнение двух чисел без лишней магии.
9. РНРШНИК - 08 Апреля, 2012 - 18:33:04 - перейти к сообщению
ВЕК ЖИВИ, ВЕК УЧИСЬ. СПАСИБО ВСЕМ ЗА ОТВЕТЫ!
10. LIME - 08 Апреля, 2012 - 19:04:36 - перейти к сообщению
РНРШНИК а так?
PHP:
скопировать код в буфер обмена
  1.  if( $varInteger === $varString )
11. РНРШНИК - 08 Апреля, 2012 - 20:30:56 - перейти к сообщению
LIME пишет:
РНРШНИК а так?
PHP:
скопировать код в буфер обмена
  1.  if( $varInteger === $varString )

а так всё ясно: типы разные - условие не выполнится, однако меня интересовал вопрос неявного приведения типов, ответ на который я получил весьма полноценно. Улыбка

 

Powered by ExBB FM 1.0 RC1