04 января 2011

Урок. Работа с функциями (Основы PHP)

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

function name(){ # function - объявление функции, name - название функции, () - тут, в скобках, находятся аргументы (пока будем без них)
... # - всякий код
} # закрытие функции


По образцу напишем:
function lampa(){
    echo "Лампочка зажгись!"; # выводит "Лампочка зажгись!"
}



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

то есть, теперь lampa() - стала одной из функций, как, например, print_r(), count(), strlen(), strpos(), unset() и так далее...

Напишем функцию немного по другому:
function lampa(){
   $click="Лампочка зажгись!"; # заносим в переменную предложение "Лампочка зажгись!"
   return $click;
}


теперь, если вызвать функцию как и раньше:
lampa();

то ничего не произойдет, чтобы вывести строку Лампочка зажгись!, теперь необходимо писать:
echo lampa();

то есть, return(с английского означает "возвратить"), можно сказать "превращает" всю функцию в переменную $click. Иными словами, функция становится не носителем кода, а носителем того, что несла переменная $click.

Теперь напишем функцию включения люстры(с трёмя разноцветными лампочками), то есть - с аргументами в скобках:

function lustra($green_lampa, $red_lampa, $blue_lampa){
   if($green_lampa) echo "Зеленая лампочка зажгись! ";
   if($red_lampa) echo "Красная лампочка зажгись! ";
   if($blue_lampa) echo "Синяя лампочка зажгись!";
}


Если написать:
lustra(1,1,1);

Выведется вот что:
Зеленая лампочка зажгись! Красная лампочка зажгись! Синяя лампочка зажгись!

Цитирую (php)
lustra(1,0,1);

То на этот раз выведется:
Зеленая лампочка зажгись! Синяя лампочка зажгись!
то есть пропустится красная лампочка, потому что в аргументах она равна нулю, и оператор if её определил как false(0 - это false, 1 - это true), что не сходится с условием, потому что условие состоит в том чтобы лампочка была true, ну надеюсь это понятно.

если же вовсе написать везде нули:
lustra(0, 0, 0);

то в итоге ничего не произойдет, потому что все лампочки равняются false (0)

Ну чтож, давайте немножко усложним код, и заодно выучим функцию explode():
function lustra($lamps, $trues){
   $colors=explode("|", $lamps);
   $light=explode(",", $trues);
   if($light[0]) echo $colors[0]." лампочка зажгись! ";
   if($light[1]) echo $colors[1]." лампочка зажгись! ";
   if($light[2]) echo $colors[2]." лампочка зажгись! ";
}
lustra("red|green|blue", "1,1,1");



рассмотрим:
$colors=explode("|", $lamps);

первый аргумент функции explode() - это знак разделения, в данном случае - "|", второй - имя переменной, которая несет в себе строку поделенную на эти разделители, то есть red|green|blue. Теперь массив $colors содержит в себе такие значения: red, green, blue. То есть:
в $colors[0] находится слово red
в $colors[1] находится слово green
в $colors[2] находится слово blue
аналогично и с:
$light=explode(",", $trues);

только теперь разделителем является запятая, что соответствует "1,1,1"
Давайте еще раз усложним код, применим for

function lustra($lamps, $trues){
  $colors=explode("|", $lamps);
  $light=explode(",", $trues);
  for($i=0;$i<count($light);$i++){
    if($light[$i]) echo $colors[$i]." лампочка зажгись! ";
  }
}
lustra("red|green|blue", "1,1,1");


$i<count($light) - это условие, при котором происходит цикл. count высчитывает кличество ячеек(значений) в массиве, и тем самым условие $i<count($light) позволяет циклу пройтись по всем данным в масссиве.

Пожалуй это всё! На следующем уроке мы применим эти знания на создание функции склонения.
Всех с наступающим 2012 годом!

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

Отправить комментарий

Лучшие сообщения