Перейти к содержимому

Функция PHP array_walk(): как использовать её для эффективной работы с массивами

Функция PHP array\_walk() — это встроенная функция, которая позволяет разработчикам выполнять операции над каждым элементом массива. array\_walk() — очень полезный инструмент, способный упростить ваш код и повысить его эффективность. В этой статье мы рассмотрим множество способов использования array\_walk() и покажем, как применять его максимально эффективно.

Что такое array_walk()?

Функция array\_walk() — это функция PHP, которая применяет пользовательскую функцию к каждому элементу массива. Она принимает два обязательных параметра: массив для обработки и пользовательскую функцию обратного вызова (callback). Также она принимает необязательный третий параметр $userdata, который передаётся в callback. Функция возвращает true при успешном выполнении. Callback вызывается для каждого элемента массива, и его цель — изменить или обработать массив определённым образом.

Примеры использования array_walk()

Пример 1: Изменение массивов

Одно из основных применений array\_walk() — изменение массивов. Благодаря возможности применять пользовательскую функцию к каждому элементу, это простой способ преобразовать массив в соответствии с вашими требованиями. Ниже приведён пример того, как с помощью array\_walk() можно изменить регистр всех элементов массива.

Пример PHP 1: Изменение массивов

php
<?php
    $array = ["apple", "banana", "cherry"];
    
    function change_case(&$value) {
        $value = strtoupper($value);
    }
    
    array_walk($array, 'change_case');
    
    print_r($array);
?>

Вывод:


console
Array
(
    [0] => APPLE
    [1] => BANANA
    [2] => CHERRY
)

В этом примере мы сначала определяем массив из трёх элементов. Затем мы определяем пользовательскую функцию change_case(), которая использует встроенную функцию PHP strtoupper() для перевода каждого элемента в верхний регистр. Далее мы используем функцию array_walk() для применения функции change_case() к каждому элементу массива. Наконец, мы используем функцию print_r() для вывода изменённого массива.

Пример 2: Выполнение вычислений

Ещё одно мощное применение array\_walk() — выполнение вычислений над массивами. Благодаря возможности применять пользовательскую функцию к каждому элементу, вы можете использовать array\_walk() для выполнения широкого спектра вычислений. Ниже приведён пример того, как с помощью array\_walk() можно вычислить сумму всех элементов массива.

Пример 2: Выполнение вычислений

php
<?php
    $array = [1, 2, 3, 4, 5];
    
    $total = 0;
    array_walk($array, function($value, $key) use (&$total) {
         $total += $value;
    });
    
    echo "The total sum is: $total";
?>

Вывод:


console
The total sum is: 15

В этом примере мы сначала определяем массив из пяти элементов. Затем мы определяем анонимную функцию, которая добавляет каждый элемент к текущей сумме. Мы используем функцию array_walk() для применения этой функции к каждому элементу массива. Наконец, мы выводим общую сумму с помощью оператора echo.

Пример 3: Работа с многомерными массивами

array\_walk_recursive() также полезна при работе с многомерными массивами. Благодаря возможности применять пользовательскую функцию к каждому элементу, вы можете использовать array\_walk_recursive() для обработки каждого элемента многомерного массива. Ниже приведён пример того, как с помощью array\_walk_recursive() можно изменить регистр всех элементов многомерного массива.

Пример PHP 3: Работа с многомерными массивами

php
<?php
    $array = [
        ["apple", "banana", "cherry"],
        ["orange", "grape", "pineapple"]
    ];
    
    function change_case(&$value) {
        $value = strtoupper($value);
    }
    
    array_walk_recursive($array, 'change_case');
    
    print_r($array);
?>

Вывод:


console
Array
(
    [0] => Array
        (
            [0] => APPLE
            [1] => BANANA
            [2] => CHERRY
        )

    [1] => Array
        (
            [0] => ORANGE
            [1] => GRAPE
            [2] => PINEAPPLE
        )

)

В этом примере мы определяем многомерный массив, состоящий из двух массивов, каждый из которых содержит три элемента. Затем мы определяем пользовательскую функцию change_case(), которая использует встроенную функцию PHP strtoupper() для перевода каждого элемента в верхний регистр. Далее мы используем функцию array_walk_recursive() для применения функции change_case() к каждому элементу многомерного массива. Наконец, мы используем функцию print_r() для вывода изменённого массива.

Заключение

Подводя итог, функция PHP array\_walk() — это мощный инструмент для разработчиков, стремящихся управлять массивами в PHP. Благодаря возможности применять пользовательскую функцию к каждому элементу, она является ценным помощником для тех, кто хочет оптимизировать свой код и повысить его эффективность. В этой статье мы рассмотрели множество способов использования array\_walk() и показали, как извлечь из этой функции максимум пользы. Надеемся, что приведённые примеры помогут вам внедрить array\_walk() в свои проекты и сделать код более эффективным.

Практика

Какова функциональность функции 'array_walk()' в PHP?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.