Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: strcmp возвращает число 2
Покинул форум
Сообщений всего: 24
Дата рег-ции: Сент. 2011
Помог: 0 раз(а)
Привет!
Столкнулся с непоняткой! Когда $a целое число, врзвращяется число 0. По документации http://php.su/functions/?f=strcm...&choice=info , нет такого что бы функция возвращала число 2.
Понятно что каждая функция делает. Вопрос в том, почему число 2 возвращается?
Zuldek
Отправлено: 20 Января, 2012 - 12:44:14
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
grizzlynet пишет:
Понятно что каждая функция делает. Вопрос в том, почему число 2 возвращается?
Если задали этот вопрос то вам не понятно что и главное как делает каждая функция. Выведите результаты как показал и поймете. Результирующая третья функция может вам вывести любое положительное число в зависимости от параметров.
Мелкий
Отправлено: 20 Января, 2012 - 12:51:51
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Потому что 2>0.
Почему именно 2, а не 5 - можете покопать Zend/zend_builtin_functions.c из сырцов PHP. Впрочем, оттуда вы попадёте в сишную функцию strcmp с аналогичным поведением.
----- PostgreSQL DBA
grizzlynet
Отправлено: 20 Января, 2012 - 12:55:02
Новичок
Покинул форум
Сообщений всего: 24
Дата рег-ции: Сент. 2011
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
grizzlynet
Отправлено: 21 Января, 2012 - 09:02:32
Новичок
Покинул форум
Сообщений всего: 24
Дата рег-ции: Сент. 2011
Помог: 0 раз(а)
Вообще ,да, это ф-ий для работы со строками, я применил её для проверки- целое или вещественное число.
даже так echo strcmp("21689","2"); //выводит 4
OrmaJever
Отправлено: 21 Января, 2012 - 13:05:18
Активный участник
Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010 Откуда: Чернигов
Помог: 299 раз(а)
grizzlynet пишет:
даже так echo strcmp("21689","2"); //выводит 4
Даже как? любой символ взятый в кавычки это строка, а эта функции возвращает разницу в длине строк, поэтому здесь всё верно.
Второй момент, число не бывает длинее или короче, оно бывает больше или меньше, поэтому с числовыми типами будет -1, 0 или 1.
----- Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.