<?php
// Проверим, была ли форма отправлена
if(
isset($_POST['num1']) && is_numeric($_POST['num1']) &&
isset($_POST['num2']) && is_numeric($_POST['num2']) &&
isset($_POST['operator']) && !empty($_POST['operator'])
){
// Отфильтруем полученные значения
$num1 = $_POST['num1'] * 1;
$num2 = $_POST['num2'] * 1;
$operator = $_POST['operator'];
// Создадим переменную для хранения результата вычисления
$output = "$num1 $operator $num2 = ";
// В зависимости от оператора будем выполнять разные математические действия
switch ($operator){
case '+':
$output .= $num1 + $num2; break;
case '-':
$output .= $num1 - $num2; break;
case '*':
$output .= $num1 * $num2; break;
case '/':
// В случае деления не забываем проверить,
// чтобы делитель не был равен нулю
if($num2 == 0){
$output = 'Деление на ноль запрещено!';
}else{
$output .= $num1 / $num2;
}
break;
default:
$output = "Неизвестный оператор '$operator'";
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
<title>Калькулятор</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head>
<body>
<h1>Калькулятор</h1>
<?php
// Если результат существует, выводим его
if(isset($output)){
print "<p>Результат: $output</p><hr />";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Число 1:<br />
<input type="text" name="num1" /><br /><br />
Оператор:<br />
<input type="text" name="operator" /><br /><br />
Число 2:<br />
<input type="text" name="num2" /><br /><br />
<input type="submit" value="Считать!" />
</form>
</body>
</html>
Объясните вот этот кусок кода, в чем его смысл?
if(
isset($_POST['num1']) && is_numeric($_POST['num1']) &&
isset($_POST['num2']) && is_numeric($_POST['num2']) &&
isset($_POST['operator']) && !empty($_POST['operator'])
){
и вот это ещё смущает:
!empty($_POST['operator'])
Смущает очень вот эта запись.
$output = "$num1 $operator $num2 = ";
Три переменные присваиваются одной что ли?
Спустя 3 минуты, 18 секунд (14.09.2011 - 14:19) m4a1fox написал(а):
проверка на сущ. переменных запроса
Цитата |
Смущает очень вот эта запись. |
Меня тоже
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
Спустя 1 минута, 3 секунды (14.09.2011 - 14:20) caballero написал(а):
[
Цитата |
Объясните вот этот кусок кода, в чем его смысл? |
глупо ставить isset если уже есть is_numeric
очевидно что несуществующая переменная не может быть числом
if(is_numeric($_POST['num1']) && is_numeric($_POST['num2']) && strlen($_POST['operator']) > 0 )
Спустя 6 минут, 15 секунд (14.09.2011 - 14:26) alex12060 написал(а):
/**
* @func manual
* @author alex12060
* @arg $func - интересующая Вас функция (!!!Без скобок!!!)
* @arg [opt] $lang - язык, по умолчанию - русский
* @demo manual('isset');
* @return ''
* Функция предназначена для формирования ссылки на мануал
* для ознакомления с определенной функцией.
* [irony] Думаю, будет полезна [/irony]
*/
function manual($func, $lang='ru') {
$man_page = 'http://php.net/manual/'.$lang.'/function.'.$func.'.php';
echo '<a href="'.$man_page.'" target="_blank" title="Почитать мануал">Прочесть о функции <b>'.
htmlspecialchars($func).'</b> в мануале</a>'.PHP_EOL;
return;
}
manual('isset');
Спустя 3 минуты, 32 секунды (14.09.2011 - 14:30) alex12060 написал(а):
<input type="text" name="operator" /><br /><br />
!empty($_POST['operator'])
Тут идет проверка, ввели ли какой-то оператор (то ли сложение, то ли вычитание...)
if(
isset($_POST['num1']) && is_numeric($_POST['num1']) &&
isset($_POST['num2']) && is_numeric($_POST['num2']) &&
isset($_POST['operator']) && !empty($_POST['operator'])
){
Если существует первое число и оно число и существует 2 число и оно число исуществует оператор и оно не пустой, то ....
$output = "$num1 $operator $num2 = ";
В переменную $output записывается строка вида:
число оператор число2 =
Спустя 6 минут, 43 секунды (14.09.2011 - 14:36) romantik2011 написал(а):
Скажите, вот эта запись !empty($_POST['operator'])
равносильна этой isset($_POST['operator'])?
Меня просто смущает восклицательный знак в эмпти.
равносильна этой isset($_POST['operator'])?
Меня просто смущает восклицательный знак в эмпти.
Спустя 11 минут, 6 секунд (14.09.2011 - 14:47) alex12060 написал(а):
romantik2011
isset() - существует ли элемент в массиве
empty() - пустой ли элемент в массиве
* в данном случае рассматриваем массив
Получится так:
Думаю, разберешься, почему так?
isset() - существует ли элемент в массиве
empty() - пустой ли элемент в массиве
* в данном случае рассматриваем массив
# Отличия
$arr = array(0 => '11', 2 => '');
echo '<h3>isset</h3>'.PHP_EOL;
for($i=0; $i<sizeof($arr)+1; ++$i)
echo isset($arr[$i]) ? 'isset!<br />' : 'not isset.<br />';
echo '<h3>empty</h3>'.PHP_EOL;
for($i=0; $i<sizeof($arr)+1; ++$i)
echo empty($arr[$i]) ? 'empty!<br />' : 'not isset.<br />';
Получится так:
isset
isset!
not isset.
isset!
empty
not empty.
empty!
empty!
Думаю, разберешься, почему так?