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 :: Мини-калькулятор

 PHP.SU

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


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

> Без описания
romantik2011
Отправлено: 14 Сентября, 2011 - 14:13:32
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011  


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




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // Проверим, была ли форма отправлена
  3. if(
  4.         isset($_POST['num1']) && is_numeric($_POST['num1']) &&
  5.         isset($_POST['num2']) && is_numeric($_POST['num2']) &&
  6.         isset($_POST['operator']) && !empty($_POST['operator'])
  7. ){
  8.         // Отфильтруем полученные значения
  9.         $num1 = $_POST['num1'] * 1;
  10.         $num2 = $_POST['num2'] * 1;
  11.         $operator = $_POST['operator'];
  12.        
  13.         // Создадим переменную для хранения результата вычисления
  14.         $output = "$num1 $operator $num2 = ";
  15.        
  16.         // В зависимости от оператора будем выполнять разные математические действия
  17.         switch ($operator){
  18.                 case '+':
  19.                         $output .= $num1 + $num2; break;
  20.                 case '-':
  21.                         $output .= $num1 - $num2; break;
  22.                 case '*':
  23.                         $output .= $num1 * $num2; break;
  24.                 case '/':
  25.                         // В случае деления не забываем проверить,
  26.                         // чтобы делитель не был равен нулю
  27.                         if($num2 == 0){
  28.                                 $output = 'Деление на ноль запрещено!';
  29.                         }else{
  30.                                 $output .= $num1 / $num2;
  31.                         }
  32.                         break;
  33.                 default:
  34.                         $output = "Неизвестный оператор '$operator'";
  35.         }
  36.        
  37. }
  38. ?>
  39.  
  40. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  41.  
  42. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
  43. <head>
  44.         <title>Калькулятор</title>
  45.         <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
  46. </head>
  47. <body>
  48.  
  49. <h1>Калькулятор</h1>
  50.  
  51. <?PHP
  52. // Если результат существует, выводим его
  53. if(isset($output)){
  54.         print "<p>Результат: $output</p><hr />";
  55. }
  56. ?>
  57.  
  58. <form action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="post">
  59.  
  60. Число 1:<input type="text" name="num1" /><br />
  61. Оператор:<input type="text" name="operator" /><br />
  62. Число 2:<input type="text" name="num2" /><br />
  63. <input type="submit" value="Считать!" />
  64.  
  65. </form>
  66.  
  67. </body>
  68. </html>


Объясните вот этот кусок кода, в чем его смысл?
PHP:
скопировать код в буфер обмена
  1.  
  2. if(
  3.         isset($_POST['num1']) && is_numeric($_POST['num1']) &&
  4.         isset($_POST['num2']) && is_numeric($_POST['num2']) &&
  5.         isset($_POST['operator']) && !empty($_POST['operator'])
  6. ){
  7.  

и вот это ещё смущает:
 
 Top
Мелкий Супермодератор
Отправлено: 14 Сентября, 2011 - 14:17:51
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




romantik2011 пишет:
Объясните вот этот кусок кода, в чем его смысл?

Проверка того, что значения переданы и, к тому же, содержат числовое значение. А $_POST['operator'] - не пуст.
Что empty считает пустотой - см. тут: http://ru2.php.net/manual/en/function.empty.php


-----
PostgreSQL DBA
 
 Top
romantik2011
Отправлено: 14 Сентября, 2011 - 14:18:35
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011  


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




Смущает очень вот эта запись.
PHP:
скопировать код в буфер обмена
  1.         $output = "$num1 $operator $num2 = ";

Три переменные присваиваются одной что ли?
 
 Top
Мелкий Супермодератор
Отправлено: 14 Сентября, 2011 - 14:28:34
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




???
У вас полсотни сообщений на форуме. При том, по ООП, исключениям, перегрузке методов, а вы не знакомы с синтаксисом PHP? Не понял

А в приведённой строке формируется строковое значение.


-----
PostgreSQL DBA
 
 Top
topy
Отправлено: 14 Сентября, 2011 - 14:31:05
Post Id


Новичок


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


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




Цитата:
Три переменные присваиваются одной что ли?

Не присваиваются, они же в кавычках.
Просто сохраняются для дальнейшего вывода как строка
 
 Top
romantik2011
Отправлено: 14 Сентября, 2011 - 14:55:02
Post Id


Новичок


Покинул форум
Сообщений всего: 62
Дата рег-ции: Июль 2011  


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




Скажите, вот эта запись !empty($_POST['operator'])
равносильна этой isset($_POST['operator'])?
Меня просто смущает восклицательный знак в эмпти.
 
 Top
EuGen Администратор
Отправлено: 14 Сентября, 2011 - 14:59:11
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


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




Не равносильна.
empty посчитает "пустым" это:
''
0
'0'
null
тогда как isset только null (почитайте соответствующие описания)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Мелкий Супермодератор
Отправлено: 14 Сентября, 2011 - 15:00:18
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Нет, не равносильна. isset только скажет, есть ли такая переменная. empty укажет, содержит ли переменная что-то, что empty считает за пустое значение. И, согласно своему имени, empty является true, когда переменной нет или она содержит пустое значение.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB