return php что это

Инструкция return в PHP

Пусть у нас есть функция, которая выводит на экран квадрат переданного числа:

Пусть мы хотим не выводить значение на экран, а записать в какую-нибудь переменную, вот так:

Итак, давайте перепишем нашу функцию так, чтобы она не выводила результат на экран, а возвращала его в переменную:

После того, как данные записаны в переменную, их можно, например, вывести на экран:

А можно сначала как-то изменить эти данные, а затем вывести их на экран:

Можно сразу выполнять какие-то действия с результатом работы функции перед записью в переменную:

А можно не записывать результат в переменную, а сразу вывести его на экран:

Использование функций в выражении

Функции в функциях

Функции, конечно же, не обязательно должны быть одинаковыми.

Пусть, например, у нас есть функция, возвращающая квадрат числа, и функция, возвращающая куб числа:

Давайте с помощью этих функций возведем число 2 в квадрат, а затем результат этой операции возведем в куб:

Пусть теперь у нас есть функция, возвращающая квадрат числа, и функция, находящая сумму двух чисел:

Найдем с помощью этих функций сумму квадрата числа 2 и сумму квадрата числа 3 :

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

Пусть у вас есть функция, возвращающая квадратный корень из числа, и функция, возвращающая сумму трех чисел:

Пусть у вас есть функция, округляющая дробь до трех знаков в дробной части:

Тонкое место return

В следующем примере в зависимости от значения параметра выполнится либо первый, либо второй return :

Что выведется на экран в результате выполнения следующего кода:

Что выведет каждый из echo в результате выполнения следующего кода:

Что выведет каждый из echo в результате выполнения следующего кода:

Цикл и return

Пусть у нас есть функция, возвращающая сумму чисел от 1 до 5 :

Пусть теперь мы расположим return внутри цикла, вот так:

Что выведется на экран в результате выполнения следующего кода:

Что хотел сделать автор данного кода? Исправьте ошибку автора.

Применение return в цикле

То, что return расположен внутри цикла, не всегда может быть ошибкой.

В следующем примере сделана функция, которая определяет, сколько первых элементов массива нужно сложить, чтобы сумма стала больше или равна 10 :

Приемы работы с return

Рассмотрим, к примеру, следующий код:

Дана следующая функция:

Перепишите ее в сокращенной форме согласно изученной теории.

Источник

PHP Функции

Настоящая сила PHP заключается в его функциях.

PHP имеет более 1000 встроенных функций, и, кроме того, вы можете создавать свои собственные пользовательские функции.

PHP Встроенные функции

PHP имеет более 1000 встроенных функций, которые можно вызывать напрямую из скрипта для выполнения конкретной задачи.

Пожалуйста, ознакомьтесь со справочником по PHP для полного обзора встроенных функций PHP на нашем сайте W3Schools на русском.

PHP Пользовательские функции

Помимо встроенных функций PHP, можно создавать свои собственные функции.

Создайте пользовательскую функцию в PHP

Объявление пользовательской функции начинается со слова function :

Синтаксис

Примечание: Имя функции должно начинаться с буквы или символа подчеркивания. Имена функций НЕ чувствительны к регистру.

Совет: Дайте функции имя, которое отражает то, что делает функция!

В приведенном ниже примере мы создаем функцию с именем «writeMsg()». Открывающая фигурная скобка ( < ) обозначает начало кода функции, а закрывающая фигурная скобка ( >) обозначает конец функции. Функция выводит «Привет, мир!». Чтобы вызвать функцию, просто напишите её имя, а затем обычные скобки () :

Пример

PHP Аргументы функции

Информация может быть передана в функции через аргументы. Аргумент похож на переменную.

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

В следующем примере есть функция с одним аргументом ($fname). Когда вызывается функция familyName(), мы также передаем имя (например, Jani), и имя используется внутри функции, которая выводит несколько разных имен, но одинаковую фамилию:

Пример

Пример

Обратите внимание, что в приведенном выше примере нам не нужно было указывать PHP, какой тип данных является переменной.

PHP автоматически связывает тип данных с переменной в зависимости от её значения. Поскольку типы данных не установлены в строгом смысле, вы можете делать такие вещи, как добавление строки к целому числу, не вызывая ошибки.

В PHP 7 были добавлены объявления типов. Это дает нам возможность указать ожидаемый тип данных при объявлении функции, и, добавив объявление strict он выдаст «Fatal Error» (фатальную ошибку) если тип данных не будет соответствовать.

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

Пример

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

Пример

Объявление strict заставляет вещи использоваться по назначению.

PHP Значение аргумента по умолчанию

В следующем примере показано, как использовать параметр по умолчанию. Если мы вызываем функцию setHeight() без аргументов, она принимает значение по умолчанию в качестве аргумента:

Пример

Чтобы разрешить функции возвращать значение, используйте оператор return :

Пример

PHP Объявления типа return

Чтобы объявить тип для возвращаемой функции, добавьте двоеточие ( : ) и тип непосредственно перед открытием фигурной скобки ( < ) при объявлении функции.

В следующем примере мы указываем тип return для функции:

Пример

Вы можете указать тип возвращаемого значения, отличный от типа аргумента, но убедитесь, что возвращаемый тип является правильным:

Пример

Передача аргументов по ссылке

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

Читайте также:  Что значит кошка окотилась

Когда аргумент функции передается по ссылке, изменения аргумента также изменяют переданную переменную. Чтобы превратить аргумент функции в ссылку, & используется оператор:

Пример

Используйте аргумент передачи по ссылке для обновления переменной:

Источник

Функции в PHP

Всем привет! В этом уроке мы познакомимся с таким понятием как функции в языке PHP. Функции – вещь довольно простая. Она представляет собой кусок кода, который принимает определенные параметры и на выходе возвращает какой-либо результат. Можно написать функцию один раз, а затем использовать её в различных местах. Таким образом вам не нужно будет дублировать код, если что-то нужно сделать дважды, или трижды, или сколько угодно раз. Вообще, функции в PHP можно сравнить с функциями в математике.

В PHP изначально содержится огромное число встроенных функций. Это очень сильная сторона этого языка – почти под любую вашу потребность имеется уже готовая функция. Давайте попробуем несколько функций на практике.

Например, нам нужен косинус числа 3.14. Легко! Для этого в PHP есть функция cos.

Есть очень много функций для работы со строками. Например, можно в строке заменить одни символы другими, для этого есть функция str_replace. Например, давайте в строке “abracadabra” заменим все буквы “a” на “o”.

Вообще, гуглить и брать уже готовый код – это хороший подход, который экономит ваше время. В этом нет ничего плохого – скорее всего вы найдёте лучшее решение задачи, чем то, которое бы написали сами. Научитесь на готовых примерах, а со временем запомните наиболее частые подходы для разных случаев. Здесь главное – постоянная практика.

Пользовательские функции: пишем свою первую функцию

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

Давайте рассмотрим пример создания простейшей функции в PHP. Пусть она принимает на вход два числа и возвращает их сумму.

Окей, функцию написали, теперь можно её вызвать и посмотреть на результат её работы.

Как мы видим, функция успешно отработала. Вот так, написав её лишь один раз мы можем передавать в неё разные аргументы, и получать разные значения. Использовать функцию можно только после кода её определения!

Области видимости

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

Данный код абсолютно рабочий. Здесь переменные $x и $y внутри функции getSum живут сами по себе, а переменные с такими же именами за пределами функции – отдельно, и они ничего друг о друге не знают. При вызове функции значение передаваемого аргумента будет скопировано в локальную переменную, а после выхода из функции это значение будет удалено. То есть здесь при вызове getSum мы просто копируем значения 3 и 5 в локальные переменные $x и $y. С этого момента внутри функции внешние переменные перестают существовать, и она знает только о своих переменных.

Параметры функции: передача аргументов по ссылке и по значению

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

Передача параметров по ссылке

Однако можно передать аргумент по ссылке. Делается это при помощи знака & перед именем аргумента.

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

А если бы мы передали переменную в функцию по значению, без использования знака &, то получили бы другой результат.

Функции, в которых все аргументы передаются по значению, называются чистыми. Стоит по возможности использовать их, так как в абсолютном большинстве случаев передача значений по ссылкам не требуется и приводит к запутанности кода.

Начинаем использовать тайп-хинтинг (type hinting) в PHP 7

В PHP 7 в функциях появилась возможность указывать типы аргументов, в том числе для скалярных типов (строки, числа). При этом при передаче аргумента в функцию, передаваемое значение будет автоматически приведено к нужному типу. Давайте перепишем нашу функцию, учитывая современные возможности PHP 7.

Вот так, теперь при передаче любых значений в функцию, они автоматически будут приведены к числам. Давайте это проверим – вставим вызов функции var_dump внутри нашей функции, и посмотрим, что получится.

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

После выполнения мы увидим следующее:

То есть в тот момент, когда аргумент пришёл в функцию, он был уже нужного типа. Давайте попробуем убрать указание типа из аргумента:

Читайте также:  ооо специализированный застройщик новая жизнь недвижимость

Теперь дробное число не будет приведено к целому, и мы получим другой результат:

В этом курсе мы всегда будем использовать указание типов. Это помогает писать более строгий код и позволяет допускать меньше ошибок. Посудите сами – если мы работаем с конкретным типом, мы более уверены в том, как будет работать тот или иной код.

Строгая типизация

Как я уже сказал, по умолчанию значение аргумента будет автоматически приведено к указанному типу. Однако в PHP есть возможность указать явно, что аргумент, передаваемый в функцию, будет иметь конкретный тип. Это делается с помощью директивы:

Она указывается в начале PHP-файла. Наш код примет следующий вид:

При этом, если его сейчас запустить, то произойдёт ошибка с типом TypeError.

Как тут написано, первый аргумент, переданный в getSum() обязан быть типа integer, а передан с типом float. Это и есть строгая типизация в PHP. Использовать её в рамках данного курса мы не будем, да и в профессиональной разработке на PHP этот функционал пока не используют. Но не рассказать о ней я не мог, вполне возможно, что это могут спросить при собеседовании на работу. А сейчас убираем строку declare(strict_types=1); из нашего кода и идём дальше.

Функции без аргументов

Как я говорил, функция может вообще не иметь аргументов. Таковой, например, является стандартная функция rand() – она просто возвращает случайное число.

Давайте её попробуем в действии:

Давайте запустим ещё раз этот же самый код:

Работает. А давайте теперь напишем свою функцию, которая тоже не принимает аргументов, и возвращает синус случайного числа:

Функция внутри функции

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

Здесь мы использовали функцию cos() из стандартной библиотеки внутри нашей собственной функции. А можно ли вызывать свои же функции из других своих функций? Да легко!

Здесь мы определили 2 разные функции, и во второй начали использовать первую. Разумеется, эти примеры довольно искусственны. И вы можете подумать, что использовать здесь функции излишне. Ведь можно же просто заменить этот код следующим выражением:

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

Код данной функции можно упростить, так как если $x не больше $y, то мы в любом случае вернём $y. Поэтому можно убрать блок else:

Результат будет таким же. Так происходит, как я уже говорил, что как только в функции выполнится return, значение будет тут же возвращено, а функция завершит свою работу.

Давайте передадим первым аргументом большее число:

Рекурсивные функции

Вот мы узнали, что можно вызывать одну функцию внутри другой. Однако бывают ситуации, когда нужно вызвать одну и ту же функцию внутри себя самой.

Например, нам нужно возвести число в степень. Предположим, у нас для этого есть определённая функция. Назовём её power. И пусть она принимает 2 аргумента:

То есть, для того, чтобы возвести число 2 в третью степень, нам нужно вызвать эту функцию следующим образом:

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

Тогда для возведения 2 в степень 3 получим:

Число в первой степени равно самому этому числу. Здесь нам нужно остановиться.

Давайте реализуем это с помощью кода:

Вывод получится следующим:

Таким образом, мы видим, что функция была вызвана трижды, и мы видим, какими были значения аргументов на каждом вызове. Надеюсь, тут всё понятно. Если же нет (а при изучении рекурсии это происходит довольно часто) – пишите ваши вопросы в комментариях, помогу. А ещё можете пошагово разбирать ход программы на листочке – тоже часто помогает.

Давайте для закрепления разберём ещё один пример с рекурсией. Например, мы будем передавать в функцию какое-то число $n, а она будет считать сумму всех чисел от единицы до этого числа. Назовём эту функцию getSumOfNumbersFromZero($n).

Предположим, нам нужно посчитать сумму всех чисел от 1 до 5. Тогда вызов функции будет следующим:

Как можно догадаться, этот вызов можно представить как

Или в общем случае

И так до тех пор, пока $n не станет равен 1.

Давайте реализуем это с помощью рекурсивной функции:

Всё верно! Ну, хватит рекурсии, а то я уже слышу, как у вас закипают мозги.
Очень надеюсь, что вам понравился урок. Если это так – буду рад, если вы поделитесь им в социальных сетях или расскажете друзьям. Это лучшая поддержка проекта. Спасибо тем, кто это делает. Если у вас возникли какие-то вопросы или замечания – напишите об этом в комментариях. А сейчас – делаем домашнее задание, варианты ваших решений можете писать в комментариях, я их проверю и скажу, всё ли правильно. Всем пока!

Источник

ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб сайтов под «ключ».

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

Веб-инструмент

Веб-мастерская

Веб-услуги

Веб-графика

Веб-ресурсы

Посмотрите в Google

Подписка

Подпишитесь на получение самых последних новостей и статей, с уведомлением по E-mail.

Читайте также:  Трансвертебральная микрополяризация что это

Опрос

Функции PHP. Инструкция return. Локальные переменные PHP. Глобальные переменные PHP

Функция PHP — это конструкция, которая позволяет оформить блок програмного кода для многократного использования. Такой блок (тело функции) можно озоглавить путем назначения ему имени и указать при необходимости параметры (значения переменных и выражений), с которыми он будет работать. В отличие от других языков программирования, функцию можно задавать не только в определенном месте программы, но и прямо среди других операторов.

Пользовательские функции PHP. Общий синтаксис определения функции

Пользовательские функции — это функции, которые определяются программистом. Создать функцию означает написать в програмном коде ее определение: имя, список параметров(не обязательно), и програмный код (тело функции), который будет выполнен при вызове этой функции.

function имя_функции (параметры) <
код
>

Инструкция return

Если требуется, чтобы функция возвращала некоторое значение, то в ее теле <> используется оператор возврата return с указанием справа от него, что следует возвратить. В качестве возвращаемой величины может выступать любое выражение: простое значение, имя переменной или вычисляемое выражение. Оператор return может встречаться в коде функции несколько раз. Если оператор return не использовать или не указывать справа от него возвращаемую величину, то функция ничего возвращать не будет.

Имя функции в ее вызове должно совпадать с именем ранее определенной функции. Совпадение с точностью до регистра не обязательно. Например, выражения MySr(), mYsR(), MYsr(), mysR() эквивалентны.

Параметры по умолчанию

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

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

Передача параметров по ссылке

Чтобы изменения параметров, произведенных в теле функции, были видны и за пределами ее тела, необходимо передать их по ссылке. Для указания того, что параметр передается по ссылке, перед его именем в списке параметров в определении функции следует написать символ &(амперсанд) :

Переменное число параметров

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

Внимание! При задании параметров в определении функций значений по умолчанию, последние должны быть простыми значениями, а не переменными, вычисляемыми выражениями или вызовами функций и методов объектов.

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

При создании функций, способных работать с переменными по длине списком параметров, можно применить следующие встроенные функции:

Пример использования двух функций:

В окне веб-браузера это будет выглядеть ТАК.

Обратите внимание на то, что при описании Srec() и myRec() мы указали пустые скобки в качестве списка параметров, словно функции не получает ни одного параметра. На самом деле в PHP при вызове функции можно указывать параметров больше, чем задано в списке аргументов — в этом случае никакие предупреждения не выводятся (но если фактическое число параметров меньше, чем указано в описании, PHP выдаст сообщение об ошибке). «Лишние» параметры как бы игнорируются, в результате пустые скобки в Srec() и myRec() позволяют нам в действительности передать им сколько угодно параметров.

Локальные переменные PHP

Наконец-то мы подошли вплотную к вопросу о «жизни и смерти» переменных. Действительно, во многих приводимых выше примерах мы рассматривали параметры функции (передаваемые по значению, а не по ссылке) как некие временные объекты, которые создаются в момент вызова и исчезают после окончания функции.

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

Глобальные переменные PHP

В PHP есть способ, посредством которого функции могут добраться и до любой глобальной переменной в программе (не считая, конечно, передачи параметра по ссылке). Однако для этого они должны проделать определенные действия, а именно: до первого использования в своем теле внешней переменной объявить ее «глобальной».

Поэтому описывать его прямо в функции было бы, мягко говоря, неудобно. В то же время функция GetMonthName() представляет собой довольно преемлемое средство для приведения номера месяца к его словесному эквиваленту (что может потребоваться во многих программах). Она имеет единственный и понятный параметр: это номер месяца. Как бы мы это сделали без глобальных переменных?

Источник

Обучающий онлайн портал