[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: strcmp возвращает число 2
grizzlynet
Привет!
Столкнулся с непоняткой! В документации 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 без плавающей точки

Спустя 4 минуты, 12 секунд (20.01.2012 - 14:46) asokol написал(а):
Winston, а если бы первая строка была такой же длины, как и вторая, то strcmp вернуло бы 0? smile.gif То есть 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"?

Что значит не считает? blink.gif
Тебе нужно их количество узнать?
strlen()

Спустя 8 минут, 48 секунд (20.01.2012 - 15:26) grizzlynet написал(а):
Если здесь
$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 когда первое число меньше второго
Все правильно.
Эта ф-ю предназначена для строк, а не для высчитывания разницы между числами smile.gif

Спустя 3 минуты, 50 секунд (20.01.2012 - 15:36) grizzlynet написал(а):
тады получается при типе float идет сравнение, нежели при integer))

если так echo strcmp("21689","2"); //выводит 4

Спустя 22 минуты, 39 секунд (20.01.2012 - 15:58) asokol написал(а):
strcmp для строк, а Вы в нее числа передаете. smile.gif

Спустя 3 минуты, 15 секунд (20.01.2012 - 16:02) grizzlynet написал(а):
Цитата (asokol @ 20.01.2012 - 12:58)
strcmp для строк, а Вы в нее числа передаете. smile.gif

Вообще ,да, это ф-ий для работы со строками, я применил её для проверки- целое или вещественное число.

Спустя 7 минут, 45 секунд (20.01.2012 - 16:09) asokol написал(а):
Для этого есть специальные функции. ctype_digit, is_int, is_numeric и другие.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.