[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Почему выдает ошибку? Помогите разобраться
Гость_Николай
Доброго времени суток Всем! Начинаю изучать php...

Осваиваю азы, и...



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 
function
function_div ($a, $b) // функция деления
{
switch($b)
{
case 0:
echo ' На 0 делить нельзя ';
break;

default:
return ($a / $b);
}
}

echo function_div (2, 2);



применение оператора 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.

$options = array('+' => 'add', '-' => 'subtract', '*' => 'multiply', '/' => 'divide');
$op = '-';
if(isset($options[$op])) $options[$op]($args);


Спустя 1 час, 2 минуты, 3 секунды (2.04.2011 - 20:38) sergeiss написал(а):
Trianon - спорить не буду, дабы не устраивать холивар smile.gif Но я 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 написал(а):
Коль, ну смешно же, право слово.
$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 smile.gif))

Спустя 23 часа, 13 минут, 15 секунд (3.04.2011 - 21:20) Nikage написал(а):
Вот еще вопрос...

написал по учебнику задание, которое заключалось в том чтобы с помощб переменных составить сосбтвенную сказку.

Часть 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']; а не простые переменные.

Спустя 1 час, 17 минут, 3 секунды (4.04.2011 - 00:09) RAZZOR написал(а):
Может быть отключено register_globals? Выводите не как $color, а как $_POST['color'] . Или попробуйте в начале второго файла прописать:


foreach ($_POST as $key => $value)
$$key = $value;
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.