За последние 24 часа нас посетили 18629 программистов и 1702 робота. Сейчас ищут 898 программистов ...

Помогите найти ошибку в коде

Тема в разделе "PHP для новичков", создана пользователем BezMizinca, 26 янв 2015.

  1. BezMizinca

    BezMizinca Новичок

    С нами с:
    14 янв 2015
    Сообщения:
    42
    Симпатии:
    0
    Помогите найти ошибку в коде, денвер говорит что ошибка на 12 строчке
    Parse error: syntax error, unexpected '{' in Z:\home\test1.ru\www\index.php on line 12


    Код (Text):
    1. <?php
    2. error_reporting(-1);
    3. header ('content-Type: text/html; charset=utf-8');
    4.  
    5. function cal($x, $y, $act) {
    6.     if ( $act == 'плюс') {
    7.         return $x+$y;
    8.     } elseif ($act == 'минус') {
    9.         return $x-$y;
    10.     } elseif ($act == 'умножить') {
    11.         return $x*$y;
    12.     } else ($act == 'делить') {
    13.         return $x/$y;
    14.     }
    15. }
    16.  
    17. echo cal(5, 5, 'плюс');
    18. ?>
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Ещё один с говорящим Denwer-ом... В последней строчке вместо elseif else написали. Denwer вам ничего не говорит, говорит php. Denwer - это пакет для быстрого разворачивания сервера на локальной машине
     
  3. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Раз пошла такая пьянка, то elseif - треш и вообще не нужно так делать. А еще у тебя нет обработки непредвиденных действий. Передай в $act у тебя что-то типа "пиу пиу" и все. Функция вообще ничего не вернет.

    Вот, теперь так кури:

    Код (PHP):
    1. <?php
    2. header ('content-Type: text/html; charset=utf-8');
    3.  
    4. function cal($x, $y, $act) {
    5.     switch ($act){
    6.         case 'плюс': return $x+$y;
    7.         case 'минус': return $x-$y;
    8.         case 'умножить': return $x*$y;
    9.         case 'делить': return $x/$y;
    10.         default: return 'Я не могу в '.$act. ':(';
    11.     }
    12.  
    13. }
    14.  
    15. echo cal(5, 5, 'плюс');
    16. ?>
    Добавлено спустя 1 минуту 41 секунду:
    Оно даже смотрится красивее и опрятнее.

    Добавлено спустя 2 минуты 24 секунды:
    З.Ы. Почитай, что такое switch и его особенности. Например, после каждой конструкции case должен стоять break по-хорошему, чтобы управление не передалось следующей. Но идут сразу ретурны, так что break не нужен. Опять же, так написано, чтобы было понятно, что к чему. Писал бы я "с нуля", в case_блоках я бы присваивал значение переменной $result, а потом ее отдавал одним-единственным return-ом в конце тела функции.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    иногда приходится
     
  6. BezMizinca

    BezMizinca Новичок

    С нами с:
    14 янв 2015
    Сообщения:
    42
    Симпатии:
    0
    Всем спасибо за помощь.
     
  7. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    Fell-x27 а где break? если ты хочешь сказать что они не нужны, потому что return, так то оно так, но если автар не может в своем супер простом коде найти ошибку, то потом ему это отсутствие break дорого обойдется.
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Святые макароны! Ну я же написал:
     
  9. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    поспешишь людей насмешишь, это я про себя.