IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Веб-программирование (http://www.imho.ws/forumdisplay.php?f=29)
-   -   Как узнать, является ли число in range... (http://www.imho.ws/showthread.php?t=52424)

Psionic Vision 29.02.2004 06:01

Как узнать, является ли число in range...
 
Допусти, мне нужно чтобы некая перенная обрабатывалась одним образом если она имеет значение от 1 до 20 и другим, если нет.
Мои числа имеют вид 000 то есть начинаются с нуля. Вот этот пример

<?php
if ($n > 020) {
echo "is more than 013";
} else {
echo "is less";
}
?>

срабатывает только до 009. после этого мне пишут is less. Мысль ясна?
Видимо, это происходит оттого что все числа начинающиеся на 0 не являются десятеричными? Как это обойти? Спасибо.

is_absent 29.02.2004 07:48

Не пиши первый ноль. Насколько я помню, если число начинается с 0 PHP считает, что это восьмеричное число.

Добавлено через 19 минут:
P.S.
<?php
if ($n > 020) {
echo "is more than 013";
} else {
echo "is less";
}
?>
а почему значение разные?

BiГ 29.02.2004 11:14

юзай функцию ltrim():

$n = ltrim($n, "0");

is_absent 29.02.2004 12:07

вот пример:
PHP код:

  for ($i 0$i 31$i++) {
    
$n sprintf("%03d"$i);
    echo 
"$n ";
    if (
$n 20) {
      echo 
"is more than 20\n";
    } else {
     echo 
"is less then 20\n";
    }
  } 

выводит:
Код:

000 is less then 020
...
020 is less then 020
021 is more than 020
...
030 is more than 020

насколько я понял, это и нужно

Psionic Vision 29.02.2004 15:59

BiГ
@_is_absent
Спасибо.
А что такое %03d?

is_absent 29.02.2004 16:35

Neo
Под число отводится три знака (как минимум) и пустые места заменяются на 0

Psionic Vision 29.02.2004 17:03

Значит, если я хочу два знака, то будет %02d, так?

is_absent 01.03.2004 06:46

Neo
именно :)

Psionic Vision 03.03.2004 00:21

@_is_absent
спасибо! лови 5!

is_absent 03.03.2004 07:22

Neo
Пасиб :)

P.S.
%d -- это для целых чисел. есть еще модификаторы %s -- строка, %f -- float и еще несколько других.
на _http://www.php.net/manual/en/function.sprintf.php есть их описание. Правда на английском


Часовой пояс GMT +4, время: 16:10.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.