Столкнулся с непоняткой! В документации php не нашол ответа.
Почему возвращается число 2 ?
$a =60.8;
echo strcmp($a,strval(intval($a)));
Спустя 2 минуты, 23 секунды (20.01.2012 - 14:42) Winston написал(а):
http://www.softtime.ru/dic/id_dic=59&id_group=1
Возвращается положительное число. Это значит, что $a на 2 символа больше чем $a без плавающей точки
Возвращается положительное число. Это значит, что $a на 2 символа больше чем $a без плавающей точки
Спустя 4 минуты, 12 секунд (20.01.2012 - 14:46) asokol написал(а):
Winston, а если бы первая строка была такой же длины, как и вторая, то strcmp вернуло бы 0? То есть strcmp - функция сравнения длин строк?
Спустя 7 минут, 14 секунд (20.01.2012 - 14:54) Winston написал(а):
Цитата (asokol @ 20.01.2012 - 13:46) |
Winston, а если бы первая строка была такой же длины, как и вторая, то strcmp вернуло бы 0? |
Судя из описания - да, под рукой сервера нету, потестить...
Цитата (asokol @ 20.01.2012 - 13:46) |
То есть strcmp - функция сравнения длин строк |
Я этого не говорил.
Спустя 5 минут, 21 секунда (20.01.2012 - 14:59) asokol написал(а):
Winston, нет, конечно же. Это функция сравнения строк бит в бит.
Спустя 7 минут, 48 секунд (20.01.2012 - 15:07) grizzlynet написал(а):
Цитата (Winston @ 20.01.2012 - 11:42) |
http://www.softtime.ru/dic/id_dic=59&id_group=1 Возвращается положительное число. Это значит, что $a на 2 символа больше чем $a без плавающей точки |
Тогда число integer не считает функцией strcmp символы "313545343"?
Спустя 10 минут, 32 секунды (20.01.2012 - 15:17) Winston написал(а):
Цитата (grizzlynet @ 20.01.2012 - 14:07) |
Тогда число integer не считает функцией strcmp символы "313545343"? |
Что значит не считает?
Тебе нужно их количество узнать?
strlen()
Спустя 8 минут, 48 секунд (20.01.2012 - 15:26) grizzlynet написал(а):
Если здесь
то считает 60.8 (это 4 символа) 60 (это 2 символа).
А с integer так
$a =60.8;
echo strcmp("60.8","60");
то считает 60.8 (это 4 символа) 60 (это 2 символа).
А с integer так
echo strcmp(2,3)."<br />"; //выводит -1
echo strcmp(2,313545343)."<br />"; //выводит -1
echo strcmp(313545343,2)."<br />"; //выводит 1
echo strcmp(2,2)."<br />"; //выводит 0
Спустя 5 минут, 54 секунды (20.01.2012 - 15:32) Winston написал(а):
1 - когда первое число больше второго
0 - когда числа равны
-1 когда первое число меньше второго
Все правильно.
Эта ф-ю предназначена для строк, а не для высчитывания разницы между числами
0 - когда числа равны
-1 когда первое число меньше второго
Все правильно.
Эта ф-ю предназначена для строк, а не для высчитывания разницы между числами
Спустя 3 минуты, 50 секунд (20.01.2012 - 15:36) grizzlynet написал(а):
тады получается при типе float идет сравнение, нежели при integer))
если так echo strcmp("21689","2"); //выводит 4
если так echo strcmp("21689","2"); //выводит 4
Спустя 22 минуты, 39 секунд (20.01.2012 - 15:58) asokol написал(а):
strcmp для строк, а Вы в нее числа передаете.
Спустя 3 минуты, 15 секунд (20.01.2012 - 16:02) grizzlynet написал(а):
Цитата (asokol @ 20.01.2012 - 12:58) |
strcmp для строк, а Вы в нее числа передаете. |
Вообще ,да, это ф-ий для работы со строками, я применил её для проверки- целое или вещественное число.
Спустя 7 минут, 45 секунд (20.01.2012 - 16:09) asokol написал(а):
Для этого есть специальные функции. ctype_digit, is_int, is_numeric и другие.