Неявное преобразование

Discussion in 'PHP' started by Engineer, 30 Jun 2010.

  1. Engineer

    Engineer Member

    Joined:
    22 May 2009
    Messages:
    70
    Likes Received:
    5
    Reputations:
    0
    <?php
    $b_year = 'a';
    $yearcheck = intval($b_year);
    if ($yearcheck != $b_year)
    echo 'eee';

    echo "<br />".$yearcheck;
    echo "<br /><br />".$b_year;

    ?>

    'a' == 0 дает true

    Кто может популярно объяснить такое явление?
     
  2. Catbert

    Catbert Banned

    Joined:
    29 Jun 2010
    Messages:
    80
    Likes Received:
    27
    Reputations:
    10
    А ты пиши
    if ($yearcheck !== $b_year)
     
  3. Engineer

    Engineer Member

    Joined:
    22 May 2009
    Messages:
    70
    Likes Received:
    5
    Reputations:
    0
    причем тут это?
     
  4. .::f-duck::.

    .::f-duck::. Member

    Joined:
    30 May 2009
    Messages:
    343
    Likes Received:
    32
    Reputations:
    7
    Основы пхп. Почитай,в чем различия между == && ===.
     
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Engineer ну да, преобразование достаточно неочевидно, это не единственный косяк ПХП. Но по ману - результат ожидаем. Подробнее тут: http://ru2.php.net/manual/en/types.comparisons.php
     
    _________________________
    1 person likes this.
  6. Engineer

    Engineer Member

    Joined:
    22 May 2009
    Messages:
    70
    Likes Received:
    5
    Reputations:
    0
    Это разные вещи. Первый оператор сравнения а другой оператор эквивалентности(в этом случае происходит сравнение типов тоже). Но так или иначе тут разница не только в типах но и в значении! Вот.

    Ушел читать по ссылке Gifts'a