Рекурсія в php

Відео: php для початківців: Рекурсивні функції, урок 24

Рекурсія в PHP

Відео: Рекурсія

Щось таке рекурсія, багато хто з Вас знають. Але, про всяк випадок, рекурсія - це виклик функції всередині самої себе. Однак, це визначення все знають, але ось з розумінням виникають неясності. Я вирішив в цій статті розібрати рекурсию в PHP на досить простому і реальному прикладі з практики.

Не секрет, що всі дані (за рідкісним винятком), що приходять з форм, треба пропускати через функцію htmlspecialchars (), щоб уникнути XSS. І я думаю, що Ви знаєте, що деякі вхідні дані є масивами (наприклад, при тій же завантаженні файлів). І наша з Вами завдання написати таку функцію, яка приймає масив всіх вхідних даних, а також врахувати, що серед цих даних є також масиви, всередині яких також можуть бути масиви і так далі.

Відео: Лекція 3: Рекурсивні функції




Наводжу код функції:

lt ;?php
function xss($ data){
if(is_array($ data)){// Якщо це масив
$ result
= array() -// Створюємо новий масив
foreach($ data as $ key = Gt; $ value){// Перебираємо вихідний масив
$ result
[$ key]= xss($ value) -// Рекурсивно викликаємо функцію xss
}
return $ result-// Повертається "захищений" масив
}
return htmlspecialchars($ data, ENT_QUOTES) -// Якщо це не масив, то викликаємо htmlspecialchars ()
}
$ data
= xss($ _REQUEST) -// Приклад виклику функції
?gt;



Ключовим моментом тут є, що внутрішніх масивів всередині вхідного $ data може бути дуже багато, тому без рекурсії в PHP тут не обійтися. А сам алгоритм простий:

Відео: PHP для початківців 38

  1. Якщо вхідні дані - це НЕ масив, то просто викликаємо функцію htmlspecialchars ().
  2. Якщо вхідні дані - це масив, то перебираємо всі елементи масиву і для кожного викликаємо цю ж функцію. А далі повертаємося до пункту 1.

Я розумію, що для новачків рекурсія в PHP - це досить складна річ, але я рекомендую прямо пройтися по коду, як ніби Ви інтерпритатор PHP. Тоді стане все ясніше.

Поділися в соціальних мережах:

Схожі
Створення і перебір масивів в phpСтворення і перебір масивів в php
Drag and drop завантаження файлів на сервер. Частина 3.Drag and drop завантаження файлів на сервер. Частина 3.
Робота з xml-документом в phpРобота з xml-документом в php
Робота з масивами в phpРобота з масивами в php
Формат jsonФормат json
Створення динамічної функції на phpСтворення динамічної функції на php
Як динамічно отримувати коментарі з бази даних.Як динамічно отримувати коментарі з бази даних.
Видалення каталогу з файлами в phpВидалення каталогу з файлами в php
Сортування двовимірного масиву на phpСортування двовимірного масиву на php
Як створити асоціативний масив в jаvascriptЯк створити асоціативний масив в jаvascript
» » Рекурсія в php