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 :: Версия для печати :: Операторы выбора: переключатель switch
Форумы портала PHP.SU » PHP » Программирование на PHP » Операторы выбора: переключатель switch

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

1. dread_rock - 21 Марта, 2011 - 13:51:51 - перейти к сообщению
вот ссылка на веб-учебник:
http://webmasterschool[dot]ru/php/ch2.php

потренировался. попробовал ввести с клавиатуры 3апр
получил результат - 3! если же ввести 3n, где N - число, то всё ок работает.

и если не использовать подавление, то всё время предупреждения высвечиваются:

Notice: Undefined index: number in D:\Program Files (x86)\Apache Group\Apache2\htdocs\switch\switch.php on line 14

CODE (html):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3. <title>TEST</title>
  4. </head>
  5. <body>
  6. <form action = "switch.php" method="GET">
  7.     number: <input type="text" name="number" /><br>
  8.     <input type="submit" />
  9. </form>
  10. </body>
  11. </html>
  12.  

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. //без @ notice будет
  3. @$number=$_GET['number'];
  4. if (!isset($number)) {
  5. echo "Вы не ввели число";
  6. }
  7. else {
  8. switch( $number )
  9. {
  10.     case 1:
  11.         echo "number = 1"; break;
  12.     case 2:
  13.         echo "number = 2"; break;
  14.     case 3:
  15.         echo "number = 3"; break;
  16.     case 4:
  17.         echo "вы ввели 4"; break;
  18.     case "тратата":
  19.         echo "Вы ввели тратата!"; break;       
  20.     default:
  21.         echo "This is not number or number is > 3 or < 1";
  22. }
  23. }
  24. ?>
2. OrmaJever - 21 Марта, 2011 - 14:13:44 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $number = isset($_GET['number']) ? $_GET['number'] : 0;
3. dread_rock - 21 Марта, 2011 - 14:24:49 - перейти к сообщению
Не помогло....

т.е.

$number будет присвоено значение $_GET['number'], если существует значение переменной, иначе 0.

а как мне это поможет? вот ввёл я с клавиатуры что-то. переменная существует.
но ...проблему не решает.
4. OrmaJever - 21 Марта, 2011 - 14:41:36 - перейти к сообщению
dread_rock пишет:
проблему не решает

как я понял проблема в этом?
dread_rock пишет:
Notice: Undefined index: number in D:\Program Files (x86)\Apache Group\Apache2\htdocs\switch\switch.php on line 14

то замените 14 строку на ту что я написал. Не работать просто не может.
5. dread_rock - 21 Марта, 2011 - 14:45:31 - перейти к сообщению
эмм...ну в этом тоже, но основная проблема в том, как работает switch.

если я ввожу с клавиатуры 3 - он нормально отрабатывает. т.к.
условие case 3: echo "вы ввели 3"; break;

а если я ввожу 3уптумпущму - то он всё равно пишет вы ввели 3
6. Viper - 21 Марта, 2011 - 14:53:20 - перейти к сообщению
dread_rock проблема в том что "3уптумпущму" не число.
7. OrmaJever - 21 Марта, 2011 - 14:54:39 - перейти к сообщению
Интересно... А кода нету? Переменая сама не может перевестить в int...
PHP:
скопировать код в буфер обмена
  1. $number = isset($_GET['number']) ? (string)$_GET['number'] : 0;

Может так поможет?
8. AdMeen - 21 Марта, 2011 - 15:14:31 - перейти к сообщению
dread_rock пишет:
эмм...ну в этом тоже, но основная проблема в том, как работает switch.

если я ввожу с клавиатуры 3 - он нормально отрабатывает. т.к.
условие case 3: echo "вы ввели 3"; break;

а если я ввожу 3уптумпущму - то он всё равно пишет вы ввели 3


вы не задумывались, над тем, что в php неявное приведение типов? switch приводит тип string к целочисленному типу, тоже самое что вы бы использовали

замените в своей конструкции
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  case 1:
  3.  

на
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. case '1':
  3.  


и у вас все будет правильно.
9. dread_rock - 21 Марта, 2011 - 15:25:17 - перейти к сообщению
спасибо! помогло!

да...

не посоветуете, где можно найти репетитора по php?
я создал подобную тему в разделе объявления. может ещё что посоветуете?
10. JustUserR - 21 Марта, 2011 - 23:06:31 - перейти к сообщению
dread_rock пишет:
Может ещё что посоветуете?
Использование языка программирования PHP предполагает осуществление создания приложений, для которых производится автоматизированное преобразование ассоцированных типов информационных полей, определение целевых объявленных переменных объектов на основне использования неявного связного ассоциативного массива из целевой области видимости, а также проведение вариационных действий по осуществлению модикации уровня базового элементного трактования, проводимого на основании используемого разграничения по методологии декларации разделительных и управляющих объектов

 

Powered by ExBB FM 1.0 RC1