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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
lawer85
Отправлено: 12 Февраля, 2014 - 21:59:10
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Написал такой код




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $string = file_get_contents("otvet.txt");
  3. $array = explode("\n", $string);
  4.  
  5. if((strcmp($_POST[otvet], "Джентльмены удачи")) == 0) file_put_contents("result.txt", "1");
  6.  
  7. ?>
  8. <html>
  9. <head>
  10. </head>
  11. <body>
  12.         <h1>Какой фильм Вам больше нравится?</h1>
  13.         <form name="myform" action="index.php" method="post">
  14.        
  15.                 <table>
  16.                 <tr>
  17.                 <td>
  18.                 <?PHP
  19.                 for ($i = 0; $i < count($array); $i++) {
  20.                 echo "<input type='radio' name='otvet' value='".$array[$i]."'>".$array[$i]."<br />";
  21.                 }
  22.                 ?>
  23.                 </td>
  24.                 </tr>
  25.                         <tr><td><input type="submit" value="Голосовать" name="golos" /></td></tr>
  26.                
  27.         </table>
  28.        
  29.    </form>
  30.    
  31. <body>
  32. </html>


При выборе ответа Джентльмены удачи не добавляется 1 в result.txt

Выходит, что сравнение строк Джентльмены удачи и $_POST["otvet"] не равно 0 хотя обе строки равны на самом деле.

ПОЧЕМУ???
 
 Top
OrmaJever Модератор
Отправлено: 12 Февраля, 2014 - 22:07:42
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




может быть дело в кодировке, посмотрите на содержимое var_dump'ом


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
esterio
Отправлено: 13 Февраля, 2014 - 01:51:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




=== 0
должна быть строгая проверка
 
 Top
lawer85
Отправлено: 15 Февраля, 2014 - 19:21:09
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




OrmaJever пишет:
может быть дело в кодировке, посмотрите на содержимое var_dump'ом


Дамп выдает следующее string(35) "Джентльмены удачи "
(Добавление)
esterio пишет:
=== 0
должна быть строгая проверка


Не помогает
 
 Top
snikers987
Отправлено: 15 Февраля, 2014 - 20:52:12
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


Помог: 25 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. $_POST['otvet'] = trim($_POST['otvet']);
  3.  


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
lawer85
Отправлено: 16 Февраля, 2014 - 02:11:13
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




snikers987 пишет:
PHP:
скопировать код в буфер обмена
  1.  
  2. $_POST['otvet'] = trim($_POST['otvet']);
  3.  


Не помогает
 
 Top
lawer85
Отправлено: 18 Февраля, 2014 - 19:53:24
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




Неужели никто не может помочь?

Прикол в том что если переменной $_POST['otvet'] присвоить "Джентльмены удачи", то при сравнивании вот это условие выполняется

if((strcmp($_POST[otvet], "Джентльмены удачи")) == 0) file_put_contents("result.txt", "1");
 
 Top
PHPLamer
Отправлено: 19 Февраля, 2014 - 07:41:47
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008  
Откуда: Russia, Krasnodar


Помог: 2 раз(а)




Выходит, что сравнение строк Джентльмены удачи и $_POST["otvet"] не равно 0 хотя обе строки равны на самом деле.

ПОЧЕМУ???


Очевидно ведь, потому что строки не ровны.
(Добавление)
lawer85 пишет:
OrmaJever пишет:
может быть дело в кодировке, посмотрите на содержимое var_dump'ом


Дамп выдает следующее string(35) "Джентльмены удачи "
(Добавление)
esterio пишет:
=== 0
должна быть строгая проверка


Не помогает


Посчитайте количество символов в вашей константе, их явно меньше 35.
 
 Top
log911
Отправлено: 19 Февраля, 2014 - 08:37:54
Post Id



Новичок


Покинул форум
Сообщений всего: 10
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)




попробуйте решить вашу задачу другими функциями например strpos ( http://www.php.su/functions/?strpos )

(Отредактировано автором: 19 Февраля, 2014 - 08:38:53)

 
 Top
lawer85
Отправлено: 19 Февраля, 2014 - 10:41:14
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




PHPLamer пишет:
Выходит, что сравнение строк Джентльмены удачи и $_POST["otvet"] не равно 0 хотя обе строки равны на самом деле.

ПОЧЕМУ???


Очевидно ведь, потому что строки не ровны.
(Добавление)
lawer85 пишет:
OrmaJever пишет:
может быть дело в кодировке, посмотрите на содержимое var_dump'ом


Дамп выдает следующее string(35) "Джентльмены удачи "
(Добавление)
esterio пишет:
=== 0
должна быть строгая проверка


Не помогает


Посчитайте количество символов в вашей константе, их явно меньше 35.


Я понимаю это. Что меньше явно. Только откуда берутся остальные символы?
(Добавление)
log911 пишет:
попробуйте решить вашу задачу другими функциями например strpos ( http://www.php.su/functions/?strpos )


Я конечно попробую, но мне более важно сейчас разобраться в данном случае. Тем более какая разница, если все равно данные будет отправлять та же самая форма.
 
 Top
PHPLamer
Отправлено: 19 Февраля, 2014 - 10:55:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008  
Откуда: Russia, Krasnodar


Помог: 2 раз(а)




Опять же, скорее всего у вас там пробелы, табуляции и управляющие символы.

Например после trim() какова длина строки?

Плюс вы разбиваете строку на массив по \n если я сейчас ничего не путаю, то в винде возврат \r\n. Тоесть где то ещё должен быть \r.

trim

(Отредактировано автором: 19 Февраля, 2014 - 10:57:02)

 
 Top
lawer85
Отправлено: 19 Февраля, 2014 - 11:02:57
Post Id


Частый гость


Покинул форум
Сообщений всего: 189
Дата рег-ции: Янв. 2013  


Помог: 1 раз(а)




PHPLamer пишет:
Опять же, скорее всего у вас там пробелы, табуляции и управляющие символы.

Например после trim() какова длина строки?

Плюс вы разбиваете строку на массив по \n если я сейчас ничего не путаю, то в винде возврат \r\n. Тоесть где то ещё должен быть \r.

trim


После trim символов 33
 
 Top
OrmaJever Модератор
Отправлено: 19 Февраля, 2014 - 11:25:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




lawer85 пишет:
Дамп выдает следующее string(35) "Джентльмены удачи "

Что, никто не заметил что там пробел в конце? Однако


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
PHPLamer
Отправлено: 19 Февраля, 2014 - 11:26:07
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Сент. 2008  
Откуда: Russia, Krasnodar


Помог: 2 раз(а)




Скопируйте пожалуйста полный вывод var_dump.
 
 Top
OrmaJever Модератор
Отправлено: 19 Февраля, 2014 - 11:27:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




lawer85 напишите так
PHP:
скопировать код в буфер обмена
  1. var_dump($_POST['otvet'], "Джентльмены удачи", strcmp($_POST['otvet'], "Джентльмены удачи"));

и вы всё увидите.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB