Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
2 / 2 / 10
Регистрация: 17.09.2012
Сообщений: 860

Можно ли вместо return использовать echo?

10.10.2013, 13:30. Показов 5370. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
собственно вот в чем вопрос имется такая функция

PHP
1
2
3
4
5
6
7
8
9
10
function param_start($title,$action,$id='form',$style='') {
  if (!$id) $id='form'; $winid="win_$id";
  $s=form_start($action,$id,"POST","multipart/form-data");
  if ($title!='') $s.=skin_win_start($title,$style,$winid);
  else $s.=skin_frame_start($style,$winid);
  $s.=<<<CODE
<table class="p" style="width:100%" cellspacing="0">
CODE;
  return $s;
  }
в конце функции стоит оператор возвращения return, можно ли вместо return использовать echo? (просто мне надо переменную $s выводить на экран
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.10.2013, 13:30
Ответы с готовыми решениями:

Вывести символы, используя только три ECHO. Echo '0', Echo '*', Echo '\n' (использовать цикл)
Вывести символы, используя только три ECHO. Echo '0', Echo '*', Echo '\n' (использовать цикл). Рисунок который нужно вывести: ...

return и echo
Возможно вернуть значение текстом? Вот например есть функция function product($id) { if($id == 1) return &quot;Пиво&quot;; ...

Как использовать if в echo?
Здравствуйте! Можно ли использовать конструкцию if вместе с функцией echo? То что есть - . . . echo 'sometext: &lt;input...

35
49 / 49 / 14
Регистрация: 21.03.2011
Сообщений: 113
10.10.2013, 13:32
можно и echo вместо return, можно и echo function param_start($title,$action);
1
2 / 2 / 10
Регистрация: 17.09.2012
Сообщений: 860
10.10.2013, 13:35  [ТС]
sonar200 спасибо большое)
0
349 / 120 / 1
Регистрация: 08.01.2013
Сообщений: 728
10.10.2013, 13:37
Можно. Еще можно вызвать "echo param_start(...)" в нужном месте. Зависит от конкретного случая.

ЗЫ. Еще бывают рекурсивные функции, вот там Ваш вариант точно не прокатит:
PHP
1
2
3
4
5
6
7
8
9
function factorial($f)
{
    if ($f > 1) 
    {        
        return ($f*factorial($f-1));
    } else {
        return (1);
    }
}
1
2 / 2 / 10
Регистрация: 17.09.2012
Сообщений: 860
10.10.2013, 13:45  [ТС]
ребят спасибо большое за помощь) tlittle спасибо за объяснение)
0
 Аватар для fa2m
356 / 280 / 22
Регистрация: 27.08.2012
Сообщений: 855
10.10.2013, 16:32
Цитата Сообщение от sonar200 Посмотреть сообщение
echo function param_start($title,$action);
что это?
или это чтоб нагляднее было?
0
49 / 49 / 14
Регистрация: 21.03.2011
Сообщений: 113
10.10.2013, 17:21
Цитата Сообщение от fa2m Посмотреть сообщение
что это?
или это чтоб нагляднее было?
попутало меня)) спать больше надо))
0
2 / 2 / 10
Регистрация: 17.09.2012
Сообщений: 860
10.10.2013, 23:15  [ТС]
echo function param_start($title,$action);
так работать не будет)))
0
217 / 157 / 30
Регистрация: 11.05.2010
Сообщений: 614
11.10.2013, 13:06
Позанудствую:
return прекращает работу функции и возвращает ей значение. Он не обязательный и если не указан, функция фактически превращается в процедуру (если быть точнее, получает значение Null)
а вот echo - конструкция вывода и она может быть определена как внутри, так и извне функции.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
11.10.2013, 13:50
Пошел мой знакомый как то в крутую фирму, на собеседование, и там был вопрос.
Как правильней писать функции
PHP
1
2
3
4
5
functuin f()
{
    echo 'text';
}
f();
или
PHP
1
2
3
4
5
functuin f()
{
    return 'text';
}
echo f();
Так вот, правильным ответом был 2 вариант.
И я соглашусь с этим.

Простой пример, у Вас 1 вариант и сейчас Вам нужно просто вывести текст функции в момент её вызова, и всё будет просто f().
Но что будет, когда вам станет нужно этот текст как то обработать, перед выводом? Может его нужно отправить по почте, или прогнать через регулярку?
Проблем бы не было, если бы использовался 2 вариант.

Но на самом деле, всё может зависеть от случая.
Например функция render, задача которой вывод в браузер. Бывает делают две функции с разными именами, одна сразу выводит, другая возвращает строку.
Возвращение строки нужно опять де, по той причине, что вы хотите что то сделать с данными, отправить или ещё что то...

Бывает совмещают оба варианта в одной функции.
В фреймворке Yii можно увидеть вот такой код
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public function render($view,$data=null,$return=false)
    {
        if($this->beforeRender($view))
        {
            $output=$this->renderPartial($view,$data,true);
            if(($layoutFile=$this->getLayoutFile($this->layout))!==false)
                $output=$this->renderFile($layoutFile,array('content'=>$output),true);
 
            $this->afterRender($view,$output);
 
            $output=$this->processOutput($output);
 
            if($return)
                return $output;
            else
                echo $output;
        }
    }
2
349 / 120 / 1
Регистрация: 08.01.2013
Сообщений: 728
12.10.2013, 12:32
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Но на самом деле, всё может зависеть от случая.
Например функция render, задача которой вывод в браузер. Бывает делают две функции с разными именами, одна сразу выводит, другая возвращает строку.
Возвращение строки нужно опять де, по той причине, что вы хотите что то сделать с данными, отправить или ещё что то...
Совершенно верно. Функция echo_text() и функция get_text() используются по-разному. Более того, когда я что-то писал, мне нравилась концепция возврата процедурными функциями кодов возможных ошибок.

А в Вашем примере из собеседования на работе, очевидно, более правилен первый вариант. Еще более правилен вариант "echo 'text'".
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
12.10.2013, 14:09
Ещё более правильный
HTML5
1
text
Цитата Сообщение от tlittle Посмотреть сообщение
Функция echo_text() и функция get_text() используются по-разному
если использовать return, текст без проблем можно вывести через
PHP
1
echo f();
и в этом не будет не какой ошибки.
Вот только, как я писал выше
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Но что будет, когда вам станет нужно этот текст как то обработать, перед выводом? Может его нужно отправить по почте, или прогнать через регулярку?
с echo вместо return придётся юзать костыли, типа ob_start...

Цитата Сообщение от tlittle Посмотреть сообщение
Более того, когда я что-то писал, мне нравилась концепция возврата процедурными функциями кодов возможных ошибок.
Ну если только Вам нравилось.
А вообще в пхп обработка исключений осуществляется немного иначе, как и во многих других языках.
0
349 / 120 / 1
Регистрация: 08.01.2013
Сообщений: 728
12.10.2013, 14:36
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Ещё более правильный
HTML5
1
text

если использовать return, текст без проблем можно вывести через
PHP
1
echo f();
и в этом не будет не какой ошибки.
Вот только, как я писал выше

с echo вместо return придётся юзать костыли, типа ob_start...
В конкретном случае в функции не происходит никакой обработки или получения строки для вывода. Поэтому, если в дальнейшем потребуется какая-то обработка, то будет значительно логичнее обработать строку 'text'. Данная же функция, опять же, очевидно, предназначена именно для вывода конкретной строки в стандартное устройство вывода. Если бы внутри функции было что-то наподобие "$a = 'te'; $b = 'xt'; echo $a.$b" или, хотя бы "$txt='text'; echo $txt;", то еще можно было бы что-то обсуждать.

Использовать же просто "text" - может это какой-то элемент разметки, который надо быстро менять?

Ну если только Вам нравилось.
А вообще в пхп обработка исключений осуществляется немного иначе, как и во многих других языках.
Не помню команд throw и catch в php3. Может просто не знал/не использовал
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
12.10.2013, 14:39
Цитата Сообщение от tlittle Посмотреть сообщение
Данная же функция, опять же, очевидно, предназначена именно для вывода конкретной строки в стандартное устройство вывода.
Разговор про конкретную функцию? Или про функции вообщем? Я говорю про функции вообщем. Я уже сказал что конкретно та функция вообще не нужна, проще сразу текст в HTML вписать, я не думал что Вы не понимаете что это просто пример, не как не жизненный, а просто что бы показать что это функция и у неё есть имя и тело...

Цитата Сообщение от tlittle Посмотреть сообщение
Не помню команд throw и catch в php3
Не помню встречал ли я пхп 3 после 2000 года... я уже даже пхп4 не помню когда видел последний раз...
0
349 / 120 / 1
Регистрация: 08.01.2013
Сообщений: 728
12.10.2013, 15:23
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Разговор про конкретную функцию? Или про функции вообщем? Я говорю про функции вообщем. Я уже сказал что конкретно та функция вообще не нужна, проще сразу текст в HTML вписать, я не думал что Вы не понимаете что это просто пример, не как не жизненный, а просто что бы показать что это функция и у неё есть имя и тело...
Я понимаю, что это пример. Однако непонятно, это пример, приведенный на собеседовании, или придуманный Вами? Вы говорите про функции в общем, при этом приводите в пример конкретную функцию. И тут я вижу функцию, которая явно предназначена для вывода статической текстовой строки. При выборе между предложенными вариантами однозначно склоняюсь к первому. А перед предложением своего варианта ответа изучаю конкретный скрипт.

Не помню встречал ли я пхп 3 после 2000 года... я уже даже пхп4 не помню когда видел последний раз...
Позволю себе процитировать:

Цитата Сообщение от tlittle Посмотреть сообщение
Более того, когда я что-то писал, мне нравилась концепция возврата процедурными функциями кодов возможных ошибок.
Обратите внимание на слово "когда". Я не говорю про сейчас, ибо понимаю, что использовать php5 эффективно не смогу.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
12.10.2013, 15:54
Цитата Сообщение от tlittle Посмотреть сообщение
При выборе между предложенными вариантами однозначно склоняюсь к первому
Ок. то есть к echo внутри функции?
Хорошо, теперь задача, замените в том тексте, что возвращает функция букву t на T и отправьте по почте юзеру...
Покажите код какой получается, естественно функцию менять нельзя, она где то внутри класса, и её нужно просто использовать, на то она и функция. Если мы изменим функцию, это может повлечь изменение кода по всему проекту.

Я покажу пример кода со вторым вариантом.

PHP
1
2
3
4
5
mail (
  ...,
  str_replace('t', 'T', f()),
  ...
);
Хотелось бы увидеть, как Вы реализуете это с первым вариантом.

Цитата Сообщение от tlittle Посмотреть сообщение
А перед предложением своего варианта ответа изучаю конкретный скрипт.
Функции, а особенно если это метод класса, должны быть не под конкретный скрипт, а что то, что можно использовать, и при изменении кода функции, её результат не должен меняться, иначе, весь проект может понадобиться переделывать.

Цитата Сообщение от tlittle Посмотреть сообщение
Обратите внимание на слово "когда". Я не говорю про сейчас, ибо понимаю, что использовать php5 эффективно не смогу.
Ну как бы фраза, "когда я писал", не говорит о пхп 3, может вы писали месяц назад, откуда ж я знаю

У каждого может быть своё мнение, моё, что return - лучше.
0
349 / 120 / 1
Регистрация: 08.01.2013
Сообщений: 728
12.10.2013, 18:55
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Ок. то есть к echo внутри функции?
Хорошо, теперь задача, замените в том тексте, что возвращает функция букву t на T и отправьте по почте юзеру...
Первый вариант функции ничего не возвращает.

Покажите код какой получается, естественно функцию менять нельзя, она где то внутри класса, и её нужно просто использовать, на то она и функция. Если мы изменим функцию, это может повлечь изменение кода по всему проекту.
Еще раз. Данная функция явно предназначена для того, чтобы выводить текст. Это конечный вывод, он не предполагает дальнейшей обработки.

У каждого может быть своё мнение, моё, что return - лучше.
Мое: return лучше в тех случаях, когда предполагается дальнейшая обработка.

В функции:
PHP
1
2
3
4
funtion echo_text($text)
{
    echo $text;
}
return однозначно не нужен.
Функцию:
PHP
1
2
3
4
5
6
function echo_page($pageid)
{
    ....
    // Долгое и нудное получение переменной $text из $pageid
    echo $text;
}
конечно лучше заменить на функцию get_page($pageid).

В приведенном Вами примере return явно лишний. Как я уже говорил, он был бы уместен, если бы с текстом производились какие-то операции в теле функции.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
12.10.2013, 19:04
Это бесполезный разговор... Вы упёрлись в то что там нет действий и не видите о чём я вообще говорю. Я Вам сказал, Отправьте мне на почту, то что выводиться из функции. Вот мне нужно это стало.
Ну да ладно... забудьте...
0
349 / 120 / 1
Регистрация: 08.01.2013
Сообщений: 728
12.10.2013, 19:36
Цитата Сообщение от DrobyshevAlex Посмотреть сообщение
Это бесполезный разговор... Вы упёрлись в то что там нет действий и не видите о чём я вообще говорю. Я Вам сказал, Отправьте мне на почту, то что выводиться из функции. Вот мне нужно это стало.
Ну да ладно... забудьте...
Легко.
PHP
1
2
3
mail (
  ..."TexT"...
);
У Вас в проектах есть функции one, two, three, которые возвращают, соответственно, 1, 2 и 3? Надеюсь, нет.
0
1178 / 1128 / 94
Регистрация: 31.05.2012
Сообщений: 3,060
12.10.2013, 19:53
боже... функция — это проименованная часть программы, которая может вызываться из других частей программы столько раз, сколько необходимо. Функция, в отличие от процедуры, обязательно возвращает значение.
Разговор о том что в проекте, где то, есть функция, написанная кем то, и она что то выводит, не важно что, она рендрит шаблон, или это какой то виджет...
Я же говорю, забудьте... Вы меня не понимаете
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.10.2013, 19:53
Помогаю со студенческими работами здесь

Как вместо вывода echo выполнить продолжение скрипта
Здравствуйте! Есть станица php. В ней определенный код выполняет проверку на некую валидность. Если все верно выводит: echo ''. Как...

Какой оператор можно использовать в конструкторах вместо return
Какой оператор можно использовать в конструкторах вместо return; вопрос в заголовке

Насколько разумно использовать throw вместо return
Насколько разумно использовать throw вместо return? И является ли throw более медленным?

AsyncTask. Можно ли использовать методы return внутри?
При том что они нужны только для другого метода? Или придется либо в один метод всё поместить или создавать переменные и присваивать...

Сколько раз в функции можно использовать return?
Еще такой вопрос: return можно использовать только единожды в теле функции? Использование дважды является ошибкой в данном примере? int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru