Page 52 - 4636
P. 52

Функцію larger()можна визначити таким чином:
           function larger ($х, $y) {
           if (!isset($х) || !isset ($y)) {
           return false;
           } else if ($x>=$y) {
           return $x;
           } else {
           return $y;
           }
           Ця  функція  повертає  більше  з  двох  значень,  переданих  їй.  У  випадку  помилки  функція  буде
        повертати  інше  значення.  Якщо  одне  з  чисел  відсутнє,  функція  larger()повертає  false.  (При
        цьому  програмісти,  які  використовують  такий  підхід,  повинні  мати  на  увазі,  що  тип  повернення
        необхідно перевірити за допомогою операції ===, щоб не поплутати значення false з нулем.)
           Для порівняння: вбудована функція max() нічого не повертає, якщо обидві змінні не встановлені, а
        якщо тільки одна змінна була встановлена, функція повертає значення саме цієї змінної.
           Показаний нижче код:
           $а = 1; $b = 2.5; $с = 1.9;
           echolarger($a, $b)."<br />";
           echolarger($c, $a)."<br />";
           echo larger($d, $a)."<br />";
           генерує наступне виведення, оскільки змінна $d не існує, a false на екран не виводиться:
           2.5
           1.9
           Часто функції, які виконують певне завдання, і в той самий час не повинні повертати конкретних
        значень, повертають true або false, щоб вказати на успішне або невдале виконання цього завдання.
        Значення true  і false можуть бути відповідно представлені цілими значеннями 1 або 0, хоча це
        значення іншого типу.
           Реалізація рекурсії
           У РНР підтримуються рекурсивні функції. Під рекурсивною мають на увазі функція, яка викликає
        саму себе. Ці функції особливо корисні для переміщення динамічними структурами даних, таких як
        зв'язні списки і дерева.
           Дуже  небагато  веб-додатків  вимагають  настільки  складних  структур  даних,  тому  рекурсія
        використовується досить рідко. У багатьох випадках рекурсію можна застосовувати замість ітерації,
        оскільки  обидва  ці  підходи  дозволяють  багаторазово виконувати  ті  чи  інші  дії.  Рекурсивні  функції
        працюють повільніше і використовують більший обсяг пам'яті, ніж ітерація, тому там, де це можливо,
        слід віддавати перевагу ітерації.
           Заради повноти викладу розглянемо короткий приклад, показаний в лістингу 2.3
           Лістинг 2.3 recursion.php - звернення рядка з використанням рекурсії та ітерації
           function reverse_r($str) { if
           (strlen($str) > 0) { reverse_r
           (substr($str, 1));
           }
           echo substr($str, 0, 1);
           return;
           }
           function reverse_i($str) {
           for ($i = 1; $i <= strlen ($str) ; $i++) {
           echo substr($str, -$i, 1);
           }
           return;
           }


                                                            49
   47   48   49   50   51   52   53   54   55   56   57