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
Форумы портала PHP.SU :: Версия для печати :: strcmp возвращает число 2
Форумы портала PHP.SU » » Вопросы новичков » strcmp возвращает число 2

Страниц (1): [1]
 

1. grizzlynet - 20 Января, 2012 - 12:29:50 - перейти к сообщению
Привет!
Столкнулся с непоняткой! Когда $a целое число, врзвращяется число 0. По документации http://php.su/functions/?f=strcm...&choice=info , нет такого что бы функция возвращала число 2.

2. Zuldek - 20 Января, 2012 - 12:34:38 - перейти к сообщению
strcmp($a,strval(intval($a)))
Если непонятка, то разбиратсья с такими непонятками надо так:


CODE (htmlphp):
скопировать код в буфер обмена
  1. $a =60.8;
  2. echo intval($a)."<br/>";
  3. echo strval($a)."<br/>";
  4. echo strcmp($a,strval(intval($a)));
3. grizzlynet - 20 Января, 2012 - 12:39:58 - перейти к сообщению
Zuldek пишет:
strcmp($a,strval(intval($a)))
Если непонятка, то разбиратсья с такими непонятками надо так:


CODE (htmlphp):
скопировать код в буфер обмена
  1. $a =60.8;
  2. echo intval($a)."<br/>";
  3. echo strval($a)."<br/>";
  4. echo strcmp($a,strval(intval($a)));


Понятно что каждая функция делает. Вопрос в том, почему число 2 возвращается?
4. Zuldek - 20 Января, 2012 - 12:44:14 - перейти к сообщению
grizzlynet пишет:
Понятно что каждая функция делает. Вопрос в том, почему число 2 возвращается?

Если задали этот вопрос то вам не понятно что и главное как делает каждая функция. Выведите результаты как показал и поймете. Результирующая третья функция может вам вывести любое положительное число в зависимости от параметров.
5. Мелкий - 20 Января, 2012 - 12:51:51 - перейти к сообщению
Потому что 2>0.
Почему именно 2, а не 5 - можете покопать Zend/zend_builtin_functions.c из сырцов PHP. Впрочем, оттуда вы попадёте в сишную функцию strcmp с аналогичным поведением.
6. grizzlynet - 20 Января, 2012 - 12:55:02 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. echo strcmp(2,3)."<br />"; //выводит -1
  2. echo strcmp(2,313545343)."<br />";  //выводит -1
  3. echo strcmp(313545343,2)."<br />";  //выводит 1
  4. echo strcmp(2,2)."<br />";  //выводит 0


тут понятно
(Добавление)
При типе float возвращается разница символов >

PHP:
скопировать код в буфер обмена
  1. $a = 60.856363;
  2. echo strcmp("60.856363","60"); //выводит 7


При integer выводит насколько >,<,==


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

Улыбка
7. OrmaJever - 20 Января, 2012 - 16:10:52 - перейти к сообщению
grizzlynet пишет:
По документации http://php.su/functions/?f=strcm...&choice=info , нет такого что бы функция возвращала число 2.

В документации написано
Цитата:
Возвращает отрицательное число, если str1 меньше, чем str2; положительное число, если str1 больше, чем str2, и 0 если строки равны.

А разве 2 это не положительное число? Эта функция должна возвращать разницу в длине строки.
(Добавление)
grizzlynet пишет:
При типе float возвращается разница символов >
PHP:
скопировать код в буфер обмена
  1. $a = 60.856363;
  2. echo strcmp("60.856363","60"); //выводит 7

это не float, это строка.
8. grizzlynet - 21 Января, 2012 - 09:02:32 - перейти к сообщению
Вообще ,да, это ф-ий для работы со строками, я применил её для проверки- целое или вещественное число.
даже так echo strcmp("21689","2"); //выводит 4
9. OrmaJever - 21 Января, 2012 - 13:05:18 - перейти к сообщению
grizzlynet пишет:
даже так echo strcmp("21689","2"); //выводит 4

Даже как? любой символ взятый в кавычки это строка, а эта функции возвращает разницу в длине строк, поэтому здесь всё верно.
Второй момент, число не бывает длинее или короче, оно бывает больше или меньше, поэтому с числовыми типами будет -1, 0 или 1.

 

Powered by ExBB FM 1.0 RC1