[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Куда и что возвращает returne в функции?
vas80
Друзья начал изучать пхп и не пойму куда идет возврат функции.

<?php
function sum($a, $b) {

$my_sum = $a + $b;
returne $my_sum;

}

$suoer_sum = sum(5, 6);
echo $super_sum;

?>

Получается я вызываю работу функции sum(5, 6).
Далее она передает значения в параметры.
Идет вычисление.
И тут не понятно что дальше.

Куда идет возврат результата?
Кому он возвращается?

Возвращается назад в вызов функции, а потом помещается в любую переменную?

Посмотрите изображение. Я правильно нарисовал логику действия функции. Или порядок другой?
Dezigo
Возврат может быть выведен сразу, либо присвоен переменной.
Читайте манул.

function sum($a, $b)
{
return $a + $b;
}

echo sum(5, 6);


Если вы про порядок действий, то да именно так.
Guest
Цитата (Dezigo @ 8.09.2015 - 11:42)
Возврат может быть выведен сразу, либо присвоен переменной.
Читайте манул.

function sum($a, $b)
{
return $a + $b;
}

echo sum(5, 6);


Если вы про порядок действий, то да именно так.

Да, интересует именно порядок и логика, что за чем идет и куда возвращается. То есть я правильно понимаю, что в данном случаи возврат результата функции возвращается в сам вызов функции (с чего начали тем и закончили).

Тогда что представляет собой в этом случаи вызов функции? Понятно у вызова функции есть два параметра которые подаются на вход функции.

Но в конце выполнения, как происходит записывание результата функции сюда же в сам вызов функции sum(5, 6). Куда помещается результат, в скобки вместо цифр?
dron4ik
return, a не returne



_____________
Ex3m.com.ua — Активный образ жизни
Valick
Цитата (Guest @ 8.09.2015 - 12:17)
с чего начали тем и закончили

да примерно так
Цитата (Guest @ 8.09.2015 - 12:17)
Понятно у вызова функции есть два параметра

нет, у функции могут быть аргументы, на счёт ограничения количества не скажу.
так же аргументы могут отсутсвовать (например new_sum() )
Цитата (Guest @ 8.09.2015 - 12:17)
Куда помещается результат, в скобки вместо цифр

нет, вам же написали над результатом функции можно непосредственно что-то делать
(например echo sum(5, 6); или echo 10 + sum(5, 6); )
а можно результат присвоить переменной $a = sum(5, 6); , тогда переменная $a будет содержать результат возвращаемый из функции

_____________
Стимулятор ~yoomoney - 41001303250491
Игорь_Vasinsky
функция это обёртка для кода

если есть кусок кода, который будет повторяться n-раз - то для удобства код "оборачивается" и этой обёртке назначается имя

функция находиться в глобальной области видимости - т.е. если в какой либо функции (в теле функции) необходим результат работы другой функции - то её не нужно инициализировать по новой - она доступна (ну это больше к правильности кода относиться - т.к. инициализация функции в теле другой функции - это бред)

функция может принимать аргументы - для того чтобы работать с ними в теле (речь конечно не идёт о константах - они и так доступны в теле функции)

а внутри функции - код работает так же как и везде, для возврата результата работы кода используется команда return.

для того чтобы получить результат работы функции - нужно её вызвать, пока нет вызова этой функции - нет и результата работы данной функции

инициализация

function myFunction($a, $b){
return $a+b;
}


чтобы получить результат работы - вызов

echo myFunction(4,6); //10


или сохранить результат для дальнейшего использования

$sum = myFunction(4,6);

echo 21-$sum;


или сразу

echo 21-myFunction(4,6);


нельзя называть функции такими же именами как и штатные функции (exit, die, array_map - ну штатных функций оч много) - просто получишь ошибку о не возможности декларирования функции (то же самое если ты попробуешь инициализировать 2 функции с одинаковыми именами)

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
inpost
vas80
Вместо sum(5,6) подставляется то, что написано в return.
ты пишешь: return 17;
значит для кода это выглядит так:
$super_sum = 17;


Аналогично если ты пишешь return 17, а в коде пишешь echo calc();, то результат превратится:
echo 17;


_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Игорь_Vasinsky
аргументы можно ставить разные (см. мой пример выше)

echo myFunction(4,6); //10
echo myFunction(14,6); //20
echo myFunction(1,3); //4


назначение моей функции - вернуть сумму аргументов.

так же есть аргументы по умолчанию, они объявляются последними

function myFunction($a, $b, $c=20){
return $c-$a+$b;
}


в этом случае, 3й аргумент можно не указывать

echo myFunction(1,3);// 20-1+3 = 16


ну можно и переназначить 3й аргумент

echo myFunction(3,5,50);//50-2+5 = 43


_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Guest
Цитата (Игорь_Vasinsky @ 8.09.2015 - 13:27)
функция это обёртка для кода

если есть кусок кода, который будет повторяться n-раз - то для удобства код "оборачивается" и этой обёртке назначается имя

функция находиться в глобальной области видимости - т.е. если в какой либо функции (в теле функции) необходим результат работы другой функции - то её не нужно инициализировать по новой - она доступна (ну это больше к правильности кода относиться - т.к. инициализация функции в теле другой функции - это бред)

функция может принимать аргументы - для того чтобы работать с ними в теле (речь конечно не идёт о константах - они и так доступны в теле функции)

а внутри функции - код работает так же как и везде, для возврата результата работы кода используется команда return.

для того чтобы получить результат работы функции - нужно её вызвать, пока нет вызова этой функции - нет и результата работы данной функции

инициализация

function myFunction($a, $b){
return $a+b;
}


чтобы получить результат работы - вызов

echo myFunction(4,6); //10


или сохранить результат для дальнейшего использования

$sum = myFunction(4,6);

echo 21-$sum;


или сразу

echo 21-myFunction(4,6);


нельзя называть функции такими же именами как и штатные функции (exit, die, array_map - ну штатных функций оч много) - просто получишь ошибку о не возможности декларирования функции (то же самое если ты попробуешь инициализировать 2 функции с одинаковыми именами)

в принципе понял. Спасибо!

Тогда какая разница между echo и return внутри функции.

Понятно echo выводит результат внутри функции.
return - возвращает результат из функции.

Но какая между ними разница? В любом случаи мы работаем с результатами за пределами функции. Хоть через echo, хочть return мы манипулируем значениями.
Результаты echo мы тоже можем записать в переменную и сними работать также как и через return.

В чем различия?
Dezigo
Цитата
Понятно echo выводит результат внутри функции.
return - возвращает результат из функции.

В этом и разница.
Guest
Цитата (Dezigo @ 8.09.2015 - 14:03)
Цитата
Понятно echo выводит результат внутри функции.
return - возвращает результат из функции.

В этом и разница.

как то все теоретически все получается. Разница в том, что echo выводит результат функции внутри функции, а return выводит результат из функции.

Но работает все одинаково. Так зачем же тогда придумали эти две операции если можно было ограничиться одной операцией?????
Игорь_Vasinsky
ну это как бы не камильфо - при вызове функции вывод на экран, ведь я говорю - функция это результат работы куска кода

вот и получается - что функция должна вернуть результат, а программист решит - где его вывести или использовать.

во-вторых это не читабельно - ты смотришь чужой код и видишь

getDate('+2');


конечно можно предположить - что данная функция в контексте без echo и должна выводить дату, а вдруг она она пишет дату в сессию или в бд или в файл?

а если будет написано так

echo getDate('+2');


то не возникает вопрос - что делает эта строчка в коде - не так ли?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Razzwan
Цитата (Guest @ 8.09.2015 - 14:12)
как то все теоретически все получается. Разница в том, что echo выводит результат функции внутри функции, а return выводит результат из функции.

Но работает все одинаково. Так зачем же тогда придумали эти две операции если можно было ограничиться одной операцией?????

Все имеет практическое значение. Функция - это волшебная коробочка. В нее кладешь что-то - она тебе:
- либо выполняет какую-то работу (например выводит на экран переменную при помощи "echo");
- либо возвращает какое-то значение через return;
Скрытый текст
- (есть еще смешанный вариант, когда и работа проделана и результат возвращен).


Это две вещи принципиально разные. Например: в первом случае функция может заводить мотор; вычислять погоду и записывать в файл. Т.е. работает самостоятельно и самодостаточно.
А во-втором, она тебе возвращает значение, а ты уже делай с ним, что хочешь. Хочешь на экран выводи, хочешь в другую функцию подставляй, хочешь - ничего не делай.

_____________
Youtube канал WebDeveloper->Run()
Сайт для души
Gitter
Быстрый ответ:

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