Ваш ключ: необходима авторизация | MyProxy - бесплатный обменник валидных прокси между пользователями форума.

Функции (подпрограммы)

Тема в разделе Мануалы, способы заработать, создана пользователем PatrickxDDD, 7 фев 2014.

Войдите для ответа
  1. PatrickxDDD Проверенный x3

    PatrickxDDD
    Статус:
    Вне сети
    Сообщения:
    166
    Симпатии:
    13
    Регистрация:
    10.11.14

    [​IMG]



    Вот представьте такую ситуацию, вы пишите гостевую, форум, да не важно что...! У вас в коде - много повторяющийхся действий.


    Для каждой кнопочки приходится писать одно и тоже. В итоге - захламление и нечитабельность кода. Как этого избежать?


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


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


    function example ()


    {


    //тело функции


    }


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


    function multiply($a) //Принимаемое значение занесем в переменную $a.


    {


    $a = $a * 2;


    echo $a;


    }


    multiply(2); //обращаемся к функции. В качестве аргумента передаем число 2.


    В результате работы этого скрипта мы увидим на экране число 4. Помимо чисел функции можно передавать что угодно. А что если нам не нужно чтобы функция выводила результат своей работы на экран, а отдавала его нам? Для этого существует конструкция return. Она возвращает нам какое-либо значение.


    function multiply($a) Принимаемое значение занесем в переменную $a.


    {


    $a = $a * 2;


    return $a; //возвращаем значение переменной $a


    }


    $var = 4;


    $result = multiply($var); // передаем функции multiply значение переменной $var. Т.к. функция нам возвратит результат своих вычислений, то занесем их в $result.


    Теперь по порядку. Вначале объявляется функция. Затем объявляется переменная var со значением 4. Далее мы обращаемся к функции multiply, которой передаем значение переменной var. Функция его принимает и записывает в уже свою переменную $a, которую умножает на 2 и отправляет нам. Результат записывается в переменную result. Если бы мы в конце написали echo $result, то получили бы число 8.


    А что было если бы мы написали echo $a? А ничего. Переменные, которые находится внутри функции видны только ей самой. Если вы этого не хотите, то пора познакомиться с глобальными переменными. Но об этом чуть позже, а пока немного усложним нашу функцию, передадим ей несколько параметров.


    function multiply($name1, $name2, $name3) {// записываем все принимаемые значения в переменные.


    return "$name3 $name2 $name1";// Возвращаем принятые параметры только в обратном порядке.


    }


    $result = multiply("Алексей","Андрей","Иван");// отправляем функции три значения.


    echo $result; //результат работы функции - Иван Андрей Алексей


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


    Переменная, объявленная ВНУТРИ функции, видна ТОЛЬКО функции. Такая переменная называется локальной. Пример:


    $a = 5;


    function example() {


    $a = 10;


    echo $a;


    }


    echo example();


    echo "


    ";


    echo $a;


    ?>


    На экране мы увидим такое:


    10


    5


    Как видите, внутри функции переменная $a не переписалась. Потому что они локальная, а переменная $a которая объвлена вне функции, глобальная. И это совершенно разные переменные!


    В PHP существует суперглобальный массив $GLOBALS. Это ассоциативный массив, ключом которого является имя, а значением - содержимое глобальной переменной. Ну и как к любому массиву, к нему тоже можно обратиться.


    $a = 5;


    $b = 2;


    function example() {


    $res = $GLOBALS["a"] + $GLOBALS["b"];


    echo $res;


    }


    echo example();


    echo "


    ";


    echo $a;


    ?>


    На экране мы увидим такое:


    7


    5


    Так же существует инструкия global которая позволяет функции видеть глобальные переменные. Напр. код global $a, $b написанный внутри функции, позволяет работать с переменными $a и $b как с глобальными, а не локальными.


    $a = 5;


    $b = 2;


    echo "$a, $b";


    echo "


    ";


    function example() {


    global $a, $b;


    $a++;


    $b++;


    }


    example();


    echo "$a, $b";


    ?>


    На экране мы увидим такое:


    5, 2


    6, 3


    Как видно из примера, вначале мы выводим значения переменных $a и $b, потом обращаемся к функции, которая увеличивает каждую переменную на единицу, и снова выводим те же самые переменные. Вот так с помощью glogal мы можем работать с глобальными переменными внутри функций.


    А если бы мы написали global $a то переменная $b была бы локальной. И меняя её значение внутри функции, мы не сможем поменять её за пределами нашей функции.


    ...Статические переменные...


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


    function example() {


    static $a = 5;


    $a++;


    echo "$a, ";


    }


    example();


    example();


    example();


    ?>


    На экране мы увидим такое:


    6, 7, 8, Каждый раз когда мы обращаемся к функции, переменная увеличивается на единицу, и результат мы видим на экране. А если бы мы не указали static, то после завершения работы функции переменная удалялась и на экране бы мы видели каждый раз 6, 6, 6,


    ...Функции встроенные в PHP...


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


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


    $my_array = array("Яблоко","Груша","Ананас");


    echo count($my_array); //возвратит 3.


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


    trim() - Удаляет пробелы из начала и конца строки.


    $str = " Привет как дела? ";


    echo trim($str);


    date() - Возвращает дату, указанного вами формата. Следующие символы распознаются внутри строки формата. Любой неопознанный символ будет выводиться точно, как задан:


    Y - Год напр. 1995


    y - год напр. 95


    M - Месяц напр. Oct


    m - месяц напр. 10


    M - Месяц напр. October


    D - День напр. Fri


    l - День напр. Friday


    d - день напр. 27


    z - День года напр. 299


    H - Час в 24-м формате напр. 13


    h - Час в 12-м формате напр. 1


    i - Минуты напр. 5


    s - Секунды напр. 40


    U - Секунды с начала эпохи напр. 814807830 + A - AM/PM


    a - am/pm


    echo date("H:i");


    strrev() - переворачивает строку. echo strrev("Hello world!"); //выводет "!dlrow olleH"


    list() - эта функция позволяет преобразовать значения массива в переменные.


    Синтаксис достаточно прост: list($Переменная1, $Переменная2, $ПеременнаяN) = $Массив_из_которого_брать_значения


    Каждая переменная соответствует элементу в массиве. Т.е. $Переменная1 = $Массив[0], $Переменная2 = $Массив[1]. Ну и как всегда, пример:


    $my_array = array("Яблоко","Груша","Ананас");


    list($var1, $var2, $var3) = $my_array;


    echo "Я люблю $var1 и $var3"; //выведет Я люблю Яблоко и Ананас


    Если нужно вытащить только 0 и 2 элементы массива, то это можно сделать так: list($var1, ,$var3) = $my_array; т.е. просто пропустив второй элемент массива.


    ...Итог...


    Подведем итог, чему же мы научиилсь. А научились мы в этом уроке создавать свои функции (подрограммы, пользовательские функции (одно и то же)) а именно:


    - Обращаться к функциям


    - Передавать им свои параметры


    - Возвращать из функции значения


    - Создавать глобальные, статические и локальные переменные.


    - Узнали про суперглобольный массив $GLOBALS


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

     
    7 фев 2014 #1
Top