За последние 24 часа нас посетили 15067 программистов и 1760 роботов. Сейчас ищут 1575 программистов ...

проблема с "if" - срабатывает постоянно

Тема в разделе "Вопросы от блондинок", создана пользователем Unicorn, 29 дек 2013.

  1. Unicorn

    Unicorn Новичок

    С нами с:
    13 дек 2013
    Сообщения:
    20
    Симпатии:
    0
    Есть массив $actPages
    Array
    (
    [0] => 0
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 4
    [5] => 5
    [6] => 6
    [7] => 7
    )
    Есть следующий код:
    Код (PHP):
    1. <?php
    2. $n_show =5;
    3. foreach ($actPages as $v) 
    4. { 
    5.     if ($v == $actPage) 
    6.     { 
    7.         echo '<b>[' .($v*$n_show+1) .'-' .(($v+1)*$n_show) .']</b>';
    8.     } 
    9.     else
    10.     if ($v == "...")
    11.     {
    12.         echo ' ... ';
    13.     }
    14.     else
    15.     { ?>
    16.         [url="?start=<? echo ($v*$n_show);?>"]<?echo '['.($v*$n_show+1) .'-'. (($v+1)*$n_show).']';?>[/url] <? 
    17.     }
    18. }
    Должно выводиться [1-10] [6-10] [11-15] [16-20] [21-25] [26-30] [31-35] [36-40]
    Но если $actPage больше 0, то в любом случае первым элементом выводится многоточие.
    Не могу понять, почему оно вообще выводится, ведь в массиве нет величин, равных "..." Вместо многоточия в if можно поставить абсолютно любое значение - всё равно сработает.

    Добавлено спустя 15 минут 1 секунду:
    Экспериментально выяснилось, что если в проблемном if поставить вместо "..." первым символом любую цифру, то многоточие будет ставится вместо элемента, со значением этой цифры. То есть if ($v == "2..") выведет [1-5] [6-10] ... [16-20] [21-25] и т.п.
    Вместо точек можно ставить любую букву - результат тот же. Вместо одной цифры - две, три и т.д. и заменяться будет элемент, который равен этим цифрам.
    Как будто первая проверка не срабатывает и сразу переходит ко второй.

    Ничего не понимаю :(
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    1-5

    Добавлено спустя 2 минуты 31 секунду:
    Число сравнивается со строкой. строка у тебя не имеет чисел и потому считается равной нулю. поставь тройное равно.
     
  3. Unicorn

    Unicorn Новичок

    С нами с:
    13 дек 2013
    Сообщения:
    20
    Симпатии:
    0
    Спасибо! Вроде заработало, как надо :)