Есть массив $actPages Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 ) Есть следующий код: Код (PHP): <?php $n_show =5; foreach ($actPages as $v) { if ($v == $actPage) { echo '<b>[' .($v*$n_show+1) .'-' .(($v+1)*$n_show) .']</b>'; } else if ($v == "...") { echo ' ... '; } else { ?> [url="?start=<? echo ($v*$n_show);?>"]<?echo '['.($v*$n_show+1) .'-'. (($v+1)*$n_show).']';?>[/url] <? } } Должно выводиться [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] и т.п. Вместо точек можно ставить любую букву - результат тот же. Вместо одной цифры - две, три и т.д. и заменяться будет элемент, который равен этим цифрам. Как будто первая проверка не срабатывает и сразу переходит ко второй. Ничего не понимаю
1-5 Добавлено спустя 2 минуты 31 секунду: Число сравнивается со строкой. строка у тебя не имеет чисел и потому считается равной нулю. поставь тройное равно.