Застосування функції до всіх елементів масиву
Функція array_walk (масив, функція [, дані]) застосовує створену користувачем функцію до всіх елементів масиву масив і повертає true у разі успішного виконання операції і false - в протилежному випадку.
Функція користувача, як правило, має два аргументи, у які по черзі передаються значення і ключ кожного елемента масиву. Але якщо при виконанні функції array_walk () вказано третій аргумент, то він буде розглянутий, як значення третього аргументу для функції користувача, зміст якого визначає сам користувач. Якщо функція користувача потребує більше аргументів, ніж у неї передано, то при кожному виклику array_walk () буде видаватися попередження.
Якщо необхідно працювати з реальними значеннями масиву, а не з їх копіями, слід передавати аргумент на функцію по посиланню. Однак потрібно мати на увазі, що не можна додавати або видаляти елементи масиву і проводити дії, що змінюють сам масив, оскільки в цьому випадку результат роботи array_walk () вважається невизначеним.
Приклад. Застосування функції до всіх елементів масиву
<? Php
$books1 = array (
"А. С. Пушкін" => "Руслан і Людмила",
"Л. Н. Толстой" => "Війна і мир",
"М. Ю. Лермонтов" => "Герой нашого часу");
// Створюємо функцію, яку хочемо
// Застосувати до елементів масиву
function try_walk ($val, $key, $data) {
echo "$data \" $val \ "написав $key <br>";
}
// Застосовуємо до всіх елементів масиву
// $books1 функцію try_walk
array_walk ($books1, "try_walk", "Роман");
?>
У результаті роботи скрипта одержимо:
Роман "Руслан і Людмила" написав А.С. Пушкін
Роман "Війна і мир" написав Л.М. Толстой
Роман "Герой нашого часу" написав М.Ю. Лермонтов
Зауважимо, що ми не змінили значень у елементах масиву. Щоб їх змінити, треба було передавати значення в змінну $val функції try_walk по посиланню.
Приклад. Застосування функції до всіх елементів масиву. Варіант 2
<? Php
$books1 = array (
"А. С. Пушкін" => "Руслан і Людмила",
"Л. Н. Толстой" => "Війна і мир",
"М. Ю. Лермонтов" => "Герой нашого часу");
// Створюємо функцію, яку хочемо
// Застосувати до елементів масиву
function try_walk (&$val, $key) {
$key = "<p> Автор:". $key. "<br>";
$val = "Назва: \" ". $val." \ "";
echo $key. $val;
}
// Застосовуємо до всіх елементів масиву
// $book1 функцію try_walk
array_walk ($books1, "try_walk");
print_r ($books1);
?>
У результаті роботи скрипта одержимо:
Автор: А.С. Пушкін
Назва: "Руслан і Людмила"
Автор: Л.М. Толстой
Назва: "Війна і мир"
Автор: М.Ю. Лермонтов
Назва: "Герой нашого часу"
Array ([А. С. Пушкін] =>
Назва: "Руслан і Людмила"
[Л.М. Толстой] =>
Назва: "Війна і мир"
[М.Ю. Лермонтов] =>
Назва: "Герой нашого часу")