strcasecmp - проверяет на соотвествие двух строк с учетом регистра. strcmp - проверяет на соотвествие двух строк без учетом регистра. Код (Text): <?php if(strcasecmp('Vas','Vas')) echo 'hi!'; else echo 'bye '; if(strcmp('vas','vas')) echo 'hi!'; else echo ' bye'; ?> a)В первом ифе должно вывести hi! так как Левая строка Vas такая же как правая, но выводит почему то bye. b)Во втором ифе должно вывести h! так как 2 стоки одинаковы, но выводит опять bye, почему?
читайте мануал. если 0 то строки заданным сравнением равны. если не равны - будет либо положительно либо отрицательно у вас ноль и там и там
Спс, не заметил. А почему здесь не вводил проверок на ноль, а сравнил 2 с 1 и выдало hi? if(strcasecmp(2,1)) echo 'hi!'; else echo 'bye ';
2 != 1 ни как число ни как строка (символ) следовательно функция вернет ненулевой результат - int(1) - что станет признаком неравенства заданных аргументов. но для if это и есть то самое истинное что заставляет его показать hi сравните 1 и 2 - будет int(-1). это ноль? нет, значит мы снова увидим hi сравните любые равные аргументы - будет int(0) а для if'а это условие для выполнения чего? правильно - else-конструкции то есть bye
Прошу прощения, в документации написано. http://www.php.ru/manual/function.strcasecmp.html Написал так: Код (Text): if(strcasecmp("Петя","ПЕтя")) echo 'hi!'; else echo 'bye '; Здесь str1 меньше чем str2, но возвращает true, а не отрицательное число. Почему?
откуда дровишки?)))) Код (PHP): var_dump(strcasecmp("Петя","ПЕтя")) Код (Text): int(32) 32 это ненулевое значение и приравнивается ифом к bool true
А понял прикол, по таблицу ACII приоритет смотрится, получается код заглавной буквы меньше чем маленькой, то есть Петя>ПЕтя и поэтому возвращает тру.