Осваиваю азы, и...
function function_div ($a, $b) // функция деления
{
switch "$b"
{
case: $b = 0;
echo ' На 0 делить нельзя '
break;
case ($b != 0):
return ($a / $b);
break;
}
}
echo function_div (2, 2);
Выдает ошибку:
Parse error: syntax error, unexpected '"', expecting '(' in V:\home\php.net\www\index2.php on line 80
Объясните несведущему что к чему, пожалуйста
Спустя 4 минуты, 11 секунд (2.04.2011 - 16:09) Trianon написал(а):
<?php
function function_div ($a, $b) // функция деления
{
switch($b)
{
case 0:
echo ' На 0 делить нельзя ';
break;
default:
return ($a / $b);
}
}
echo function_div (2, 2);
применение оператора switch в данном случае не оправдано вообще ничем.
Он в принципе не сильно нужный в php - но тут просто не на своем месте.
Спустя 53 секунды (2.04.2011 - 16:09) Michael написал(а):
Цитата |
Осваиваю азы, и... |
по чему то не тому ты осваиваешь азы, может по Аде?
Вот где по php:
http://php.net/manual/en/control-structures.switch.php
Спустя 1 час, 57 минут, 30 секунд (2.04.2011 - 18:07) Nikage написал(а):
Цитата (Trianon @ 2.04.2011 - 13:09) |
<?php применение оператора switch в данном случае не оправдано вообще ничем. Он в принципе не сильно нужный в php - но тут просто не на своем месте. |
Спасибо за помощь! Я использовал switch потому что в этом и состояло задание, нужно было выполнить все математические действия.
Спустя 1 минута, 23 секунды (2.04.2011 - 18:08) Nikage написал(а):
Цитата (Michael @ 2.04.2011 - 13:09) | ||
по чему то не тому ты осваиваешь азы, может по Аде? Вот где по php: http://php.net/manual/en/control-structures.switch.php |
Осваиваю по "php за три недели".
Спустя 37 минут, 18 секунд (2.04.2011 - 18:46) sergeiss написал(а):
Цитата (Trianon @ 2.04.2011 - 17:09) |
Он в принципе не сильно нужный в php |
(про оператор switch)... Не соглашусь! Очень даже нужен бывает иногда. В данном случае - да, не нужен. Но иногда очень полезен.
Спустя 50 минут, 5 секунд (2.04.2011 - 19:36) Trianon написал(а):
sergeiss
Этот оператор незаменим в паскале, в С, С++ , там где просто так выбор по некоторой скалярной величине из списка нескольких дискретных было просто напросто не организовать.
В php есть массивы, причем как разреженные, так и ассоциативные, со строковыми ключами. Переход от значения к варианту (требующий поиск в списке нескольких) с помощью массива в php выглядит изящнее, да и ресурсов тратит меньше.
Поэтому я и назвал его несильно нужным.
Таки да, бывает что с ним проще, понятнее и быстрее. Но редко.
И в отличие вышеприведенных языков, в php всегда есть возможность написать то же самое, но без switch.
Этот оператор незаменим в паскале, в С, С++ , там где просто так выбор по некоторой скалярной величине из списка нескольких дискретных было просто напросто не организовать.
В php есть массивы, причем как разреженные, так и ассоциативные, со строковыми ключами. Переход от значения к варианту (требующий поиск в списке нескольких) с помощью массива в php выглядит изящнее, да и ресурсов тратит меньше.
Поэтому я и назвал его несильно нужным.
Таки да, бывает что с ним проще, понятнее и быстрее. Но редко.
И в отличие вышеприведенных языков, в php всегда есть возможность написать то же самое, но без switch.
$options = array('+' => 'add', '-' => 'subtract', '*' => 'multiply', '/' => 'divide');
$op = '-';
if(isset($options[$op])) $options[$op]($args);
Спустя 1 час, 2 минуты, 3 секунды (2.04.2011 - 20:38) sergeiss написал(а):
Trianon - спорить не буду, дабы не устраивать холивар
Но я switch использовал и буду использовать. В том числе и для

Цитата (Trianon @ 2.04.2011 - 20:36) |
выбора по некоторой скалярной величине из списка нескольких дискретных |
А это иногда приходится делать.
Спустя 47 минут, 26 секунд (2.04.2011 - 21:25) Trianon написал(а):
Цитата |
Но я switch использовал и буду использовать. |
Используйте, конечо, кто ж мешает.
Но используя, отдавайте себе отчет в том, что в switch перебор вариантов в поисках подходящего выполняется последовательно.
А при выборке элемента массива - через хеш-поиск. То есть для сравнимых по обьему множеств - практически мгновенно.
Ну а что до эстетики кода - тут и вправду спорить смысл, как о вкусах.
Спустя 14 минут, 51 секунда (2.04.2011 - 21:40) twin написал(а):
Цитата |
И в отличие вышеприведенных языков, в php всегда есть возможность написать то же самое, но без switch. |
А как массивом такое организовать?
switch($a)
{
case 1 :
echo 'Царь<br>';
case 2 :
echo 'Царевич<br>';
case 3 :
echo 'Король<br>';
case 4 :
echo 'Королевич<br>';
case 5 :
echo 'Сапожник<br>';
case 6 :
echo 'Портной<br>';
break;
default :
echo 'Кто ты будешь такой';
break;
}
Спустя 9 минут, 54 секунды (2.04.2011 - 21:50) Trianon написал(а):
Коль, ну смешно же, право слово.
Реально же, когда нужны провалы из кейса в кейс, если ты на этом внимание акцентируешь, то оператор switch и вправду оказывается полезным.
Вот только нужны они, на моем опыте... раз в пятилетку хорошо если.
$vars = array('Кто ты будешь такой','Царь', 'Царевич', 'Король', 'Королевич','Сапожник','Портной');
echo
is_int($a) && $a > 0 && $a <= count ($vars)
? implode('<br>', array_slice($vars, $a))
: $vars[0];
Реально же, когда нужны провалы из кейса в кейс, если ты на этом внимание акцентируешь, то оператор switch и вправду оказывается полезным.
Вот только нужны они, на моем опыте... раз в пятилетку хорошо если.
Спустя 7 минут, 57 секунд (2.04.2011 - 21:58) twin написал(а):
Не, совсем не смешно, когда сравнишь время выполнения. На порядок больше, чем свич.
Спустя 8 минут, 42 секунды (2.04.2011 - 22:07) Trianon написал(а):
правильно. Две функции ведь.
Окей.
Когда мне потребуется организовать вывод такой вот последовательности, я, пожалуй, буду применять switch
))
Окей.
Когда мне потребуется организовать вывод такой вот последовательности, я, пожалуй, буду применять switch

Спустя 23 часа, 13 минут, 15 секунд (3.04.2011 - 21:20) Nikage написал(а):
Вот еще вопрос...
написал по учебнику задание, которое заключалось в том чтобы с помощб переменных составить сосбтвенную сказку.
Часть 1
Часть втрая
но в итоге не работает...
в чем проблема?
написал по учебнику задание, которое заключалось в том чтобы с помощб переменных составить сосбтвенную сказку.
Часть 1
<html>
<head>
<title>
Story
</title>
</head>
<body>
<div align = "center">
<h1>Story</h1>
<h3>Plese fill in the blancs bellow</h3>
<form method = "post" action = "story.php">
<textarea rows = 5 cols = 40 >Change the text here to see what happens</textarea>
</br>
<input type = "reset" value = "reset button">
<input type = "submit" value = "submit button">
</form>
<table border = 1>
<tr>
<th>Color</th>
<th>
<input type = "text" name = "color" value = " ">
</th>
</tr>
<tr>
<th>Musical instrumet
</th>
<th>
<input type = "text" name = "animal" value = " ">
</th>
</tr>
<tr>
<th>Another amnimal
</th>
<th>
<input type = "text" name = "animal2" value = " ">
</th>
</tr>
<tr>
<th>Yet another animal
</th>
<th>
<input type = "text" name = "animal3" value = " ">
</th>
</tr>
<tr>
<th>Place
</th>
<th>
<input type = "text" name = "place" value = " ">
</th>
</tr>
<tr>
<th>Vegetable
</th>
<th>
<input type = "text" name = "vegetable" value = " ">
</th>
</tr>
<tr>
<th>Structure
</th>
<th>
<input type = "text" name = "structure" value = " ">
</th>
</tr>
<tr>
<th>An action
</th>
<th>
<select name = "action">
<option value = "fast asleep">fast asleep</option>
<option value = "drinking capuccino">drinking capuccino</option>
<option value = "doing nothing in particular">doing nothing in particular</option>
</select>
</th>
</tr>
<tr align = center>
<td colspain = "2">
<center>
<input type = "submit" value = "tell me the story">
</center>
</td>
</tr>
</table>
</form>
<?php
?>
</body>
</html>
Часть втрая
<html>
<head>
<title>
Little Boy Who?
</title>
</head>
<body>
<div align = "center">
<h1>Little Boy Who?</h1>
<h3>Values from th story</h3>
<table border 1>
<tr>
<th>Variable</th>
<th>Value</th>
</tr>
<tr>
<th>color</th>
<td><? print $color ?></td>
</tr>
<tr>
<th>animal</th>
<td><? print $animal1?></td>
</tr>
<tr>
<th>animal2</th>
<td><? print $animal2?></td>
</tr>
<tr>
<th>animal3</th>
<td><? print $animal3?></td>
</tr>
<tr>
<th>vegetable</th>
<td><? print $vegetable?></td>
</tr>
<tr>
<th>structure</th>
<td><? print $structure?></td>
</tr>
<tr>
<th>action</th>
<td><? print $action ?></td>
</tr>
</table>
<form>
<?php
?>
</body>
</html>
но в итоге не работает...
в чем проблема?
Спустя 42 минуты, 44 секунды (3.04.2011 - 22:03) Trianon написал(а):
летчик.jpg
Спустя 49 минут, 15 секунд (3.04.2011 - 22:52) inpost написал(а):
Nikage
файлы принимаются как $_POST['values']; а не простые переменные.
файлы принимаются как $_POST['values']; а не простые переменные.
Спустя 1 час, 17 минут, 3 секунды (4.04.2011 - 00:09) RAZZOR написал(а):
Может быть отключено register_globals? Выводите не как $color, а как $_POST['color'] . Или попробуйте в начале второго файла прописать:
foreach ($_POST as $key => $value)
$$key = $value;