Урок 10. PHP — Функции

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

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

Создаем свою первую php функцию

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

Синтаксис для создания функции довольно очевидный и логичный. Во-первых, вы должны сказать PHP, что вы хотите создать функцию. Это можно сделать, введя ключевое слово function и ваше имя функции и некоторые другие вещи (о которых мы поговорим чуть позже).

Вот как выглядит объявление функции myCompanyName:

<?php
function myCompanyName(){
}
?>

Примечание: Название функции может начинаться со знака «_», но не с цифры!
Это лишь каркас нашей функции, а внутри него мы можем поместить любой код, который захотим. При вызове функции он будет выполняться. Видите в фигурных скобках в приведенном выше примере «{}»? Эти скобки определяют, где должен быть наш код функции. Открывающая фигурная скобка «{» говорит PHP, что код функции начинается, а закрывающая фигурная «}» говорит PHP, что наша функция окончена!

Давайте добавим в нее что-то простенькое, например echo.

<?php
function myCompanyName(){
    echo "Вы находитесь на блоге myblaze.ru <br />";
}
?>

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

Вызов готовой функции php

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

function myCompanyName(){
    echo "Вы находитесь на блоге myblaze.ru <br />";
}
echo "Привет всем! <br />";
myCompanyName();
echo "Рад вас видеть! <br />";

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

  • Всегда начинайте ваши функции с ключевым словом function.
  • Помните, что ваш код функции должны быть между «{» и «}».
  • Когда вы вызываете функцию, убедитесь, что пишете ее имя правильно.

Функции с параметрами

Еще одна полезная возможность состоит в том, что функции вы можете вызывать с параметрами, то есть передавать внутрь ее кода дополнительную информацию. Наша первая функция myCompanyName не очень-то и полезна, потому что все что она умеет, это печатать одну и ту же строку.

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

<?php
function sayHello($Name){
    echo "Hello there ". $Name . "!<br />";
}
?>

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

Возвращение значения функцией php

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

Как она возвращает значение? Лучше всего разобраться на примере. Объявим функцию с параметрами, а затем присвоим результат некоторой переменной, вот так:

<?php
function mySum($numX, $numY){
    $total = $numX + $numY;
    return $total; 
}
$myNumber = 0;
echo "Перед использованием функции, myNumber = ". $myNumber ."<br />";
$myNumber = mySum(3, 4); // Сохраняем результат вызова функции mySum в переменную $myNumber
echo "После вызова функции, myNumber = " . $myNumber ."<br />";
?>

Чтобы присвоить функции значение — в нее добавляется оператор return, видите его? Результат сложения двух чисел хранится в переменной $total, а с помощью return $total это значение передается самой функции. Затем мы просто присваиваем его переменной $myNumber после вызова функции mySum с двумя параметрами 3 и 4 (это числа которые следует сложить).

Практикуйтесь, разбирайтесь и у вас все получится!

Switch | Содержание | Массивы

Комментарии:

  1. Евгений — 03.10.2012 22:31

    Спасио,все достбупно и понятно.

  2. Евгений — 03.10.2012 22:31

    :) Доступно

  3. Darius — 22.03.2013 22:12

    Здравствуйте. Прошу помощи. Понял с этого урока все, но вот зачем добавлять return? Можете пояснить поподробнее. Заранее спасибо

  4. myblaze 23.03.2013 11:09

    Darius, функция всегда возвращает значение, а чтобы это значение возвратить — как раз и нужен return :)

  5. Darius — 23.03.2013 14:23

    Спасибо что ответили. Оно возвращает значение. Вот например: $total = $numX + $numY;
    return $total;
    и на что она возвращает? Понял что тотал теперь суммирует две эти цифры, а ретурн что сделает? Что он вернет? Какое значение? Извините что я тупой, но очень прошу поясните ((.

  6. Fred — 23.03.2013 15:25

    Darius вы вовсе не тупой а начинающий. В данном случае $total
    сумируе значения, а чтобы вывести результат нужно как раз таки
    вызвать return который передаёт значение $total в функцию mySum() если шо пишите на мыло halk-hero@mail.ru

  7. Darius — 23.03.2013 17:47

    Fred, ааа. Понял. Огромное спасибо!!! А я то думал что return делает вот так: return 2; и он нам покажет 1 так на вернулись на один назад )) Еще раз спасибо

  8. myblaze 23.03.2013 17:48

    Darius, в задвании вопросов нет ничего плохого, более того, это показывает , что вы действительно хотите разобраться в вопросе. Fred все верно написал, return присваивает функции значение, получается что функция как переменная только она не хранит значение а просто получает его от return и тут же передает переменной которая эту функцию вызывала, в данном случае: $myNumber = mySum(3, 4);
    $myNumber вызывает функцию mySum(), внутри которой mySum получает значение от return и тут же отдает его переменной $myNumber.

  9. Darius — 23.03.2013 17:52

    myblaze, спасибо и вам!

  10. Артём — 05.07.2013 15:50

    Почему то в браузере выдает такое

    Перед использованием функции, myNumber = 0

    Fatal error: Function name must be a string in Z:\home\localhost\www\site1\index.php on line 13

    В чем проблема ?

  11. Stas — 31.08.2013 23:40

    Артëм, здраствуйте! Пожалуйста покажите код который вы написали. Проверте синтаксис на строке 13, всë ли верно записано, не забывайте про точку с запятой после каждой команды!!

  12. Евген — 05.08.2014 16:23

    такой вопрос
    что лучше использовать если нужно вывести данные игрока в его профиль на сайте например есть запрос по api
    «all»: {
    «spotted»: 6541,
    «hits»: 28486,
    «battle_avg_xp»: 403,
    «draws»: 87,
    «wins»: 3058,
    «losses»: 3651,
    «capture_points»: 11091,
    «battles»: 6796,
    «damage_dealt»: 3088630,
    «hits_percents»: 57,
    «damage_received»: 6054671,
    «shots»: 50407,
    «xp»: 2737008,
    «frags»: 2897,
    «survived_battles»: 1309,
    «dropped_capture_points»: 2339
    },
    из которого мне нужно только «battles» как это можно реализовать не подскажите?

  13. Енот — 08.03.2015 09:05

    Спасибо!Годные уроки.

  14. Дарья — 21.01.2016 19:57

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

  15. myblaze 22.01.2016 17:35

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

  16. Артем — 27.01.2016 22:38

    Подскажите, обязательно ли надо было писать $myNumber = 0;

  17. Марина — 10.11.2016 20:11

    Спасибо огромное за ваш труд. Vielen Danke.

  18. Дим — 06.10.2017 16:48

    Зачем через return возвращать значение, если можно этому значению присвоить переменную и отдать ее на исполнение в другую функцию?????

Добавить комментарий