Рекурсія в php
Відео: php для початківців: Рекурсивні функції, урок 24
Відео: Рекурсія
Щось таке рекурсія, багато хто з Вас знають. Але, про всяк випадок, рекурсія - це виклик функції всередині самої себе. Однак, це визначення все знають, але ось з розумінням виникають неясності. Я вирішив в цій статті розібрати рекурсию в 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
- Якщо вхідні дані - це НЕ масив, то просто викликаємо функцію htmlspecialchars ().
- Якщо вхідні дані - це масив, то перебираємо всі елементи масиву і для кожного викликаємо цю ж функцію. А далі повертаємося до пункту 1.
Я розумію, що для новачків рекурсія в PHP - це досить складна річ, але я рекомендую прямо пройтися по коду, як ніби Ви інтерпритатор PHP. Тоді стане все ясніше.
- Drag and drop завантаження файлів на сервер. Частина 3.
- Як створити асоціативний масив в jаvascript
- Як динамічно отримувати коментарі з бази даних.
- Як убезпечити сайт
- Нові функції в php 5.5.
- Сортування двовимірного масиву на php
- Створення функцій в php
- Формат json
- Методи для роботи з масивами в es5.
- Робота з масивами в php
- Робота з xml-документом в php
- Чи не працює sql-запит
- Видалення каталогу з файлами в php
- Робота з масивами в html-формі
- Анонімні, або лямбда-функції в php.
- Масиви в jаvascript
- Глобальні змінні в php
- Довідкові змінні php
- Створення динамічної функції на php
- Розбиття і об`єднання рядків в php
- Функція array_pad в php.