ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Використання рекурсії в PHP
         

     

    Інформатика, програмування

    Використання рекурсії в PHP

    Дроздовський Михайло

    Рекурсія - це звернення функції до самої себе.

    Багато хто не розуміють, як же використовувати рекурсію на практиці - мовляв, "що за бред, функція звертається сама до себе ... Цього не повинно бути! ". Дійсно, здається дивно і незручно. Ну що ж, розберемо реальний випадок.

    Припустимо, нам необхідно вибудувати дерево записів з бази даних, кожен з яких має наступні параметри:

    | uid | ім'я записи | uid батьківського записи |

    Начебто, все просто - зробив код типу

    $ s = mysql_query ( "SELECT * FROM x_table WHERE parent_id = 0 ", $ conn);

    while ($ z = mysql_fetch_array ($ s)) (

    ...

    $ x = mysql_query ( "SELECT * FROM x_table WHERE parent_id = ". $ z [" uid "], $ conn);

    while ($ f = mysql_fetch_array ($ x)) (

    ...

    і т.д.

    )

    )

    Але ж кількість рівнів вкладеності може бути необмеженим! Виходить, кількість циклів буде нескінченним, довжина коду буде нескінченною ітп. Тобто зробити нічого не вийде. Як же бути.

    Деякі програмісти просидять над цим завданням досить довго. Звичайно, можна зробити 100 циклів, в надії, що такої глибокої вкладеності записів не буде. А якщо буде? До того ж код з 100 циклами буде плохочітаемим, довгим і дуже об'ємним. Ну а якщо там з'явиться невелика помилка ... (далі, я думаю, пояснювати не варто).

    -------------------------

    Це завдання досить легко вирішити за допомогою рекурсії. Пишемо невелику функцію:

    function tree ($ uid, $ conn) (

    $ sql = "SELECT * FROM x_table WHERE parent_id = $ uid ";

    $ a = mysql_query ($ sql, $ conn);

    while ($ x = mysql_fetch_array ($ a)) (

    .... якісь дії ...

    tree ($ x [ "uid"], $ conn);

    )

    )

    І запускаємо її: tree (0, $ conn). Все. Складна на вигляд завдання вирішено.

    Епілог: з подібним завданням автор зіткнувся при написанні одного веб-додатки на PHP.

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://progcpp.narod.ru/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status