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

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

1. romantik2011 - 14 Сентября, 2011 - 14:13:32 - перейти к сообщению
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.  

и вот это ещё смущает:
2. Мелкий - 14 Сентября, 2011 - 14:17:51 - перейти к сообщению
romantik2011 пишет:
Объясните вот этот кусок кода, в чем его смысл?

Проверка того, что значения переданы и, к тому же, содержат числовое значение. А $_POST['operator'] - не пуст.
Что empty считает пустотой - см. тут: http://ru2.php.net/manual/en/function.empty.php
3. romantik2011 - 14 Сентября, 2011 - 14:18:35 - перейти к сообщению
Смущает очень вот эта запись.
PHP:
скопировать код в буфер обмена
  1.         $output = "$num1 $operator $num2 = ";

Три переменные присваиваются одной что ли?
4. Мелкий - 14 Сентября, 2011 - 14:28:34 - перейти к сообщению
???
У вас полсотни сообщений на форуме. При том, по ООП, исключениям, перегрузке методов, а вы не знакомы с синтаксисом PHP? Не понял

А в приведённой строке формируется строковое значение.
5. topy - 14 Сентября, 2011 - 14:31:05 - перейти к сообщению
Цитата:
Три переменные присваиваются одной что ли?

Не присваиваются, они же в кавычках.
Просто сохраняются для дальнейшего вывода как строка
6. romantik2011 - 14 Сентября, 2011 - 14:55:02 - перейти к сообщению
Скажите, вот эта запись !empty($_POST['operator'])
равносильна этой isset($_POST['operator'])?
Меня просто смущает восклицательный знак в эмпти.
7. EuGen - 14 Сентября, 2011 - 14:59:11 - перейти к сообщению
Не равносильна.
empty посчитает "пустым" это:
''
0
'0'
null
тогда как isset только null (почитайте соответствующие описания)
8. Мелкий - 14 Сентября, 2011 - 15:00:18 - перейти к сообщению
Нет, не равносильна. isset только скажет, есть ли такая переменная. empty укажет, содержит ли переменная что-то, что empty считает за пустое значение. И, согласно своему имени, empty является true, когда переменной нет или она содержит пустое значение.

 

Powered by ExBB FM 1.0 RC1