Reg.ru: домены и хостинг

Крупнейший регистратор и хостинг-провайдер в России.

Более 2 миллионов доменных имен на обслуживании.

Продвижение, почта для домена, решения для бизнеса.

Более 700 тыс. клиентов по всему миру уже сделали свой выбор.

Перейти на сайт->

Бесплатный Курс "Практика HTML5 и CSS3"

Освойте бесплатно пошаговый видеокурс

по основам адаптивной верстки

на HTML5 и CSS3 с полного нуля.

Начать->

Фреймворк Bootstrap: быстрая адаптивная вёрстка

Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

Научитесь верстать просто, быстро и качественно, используя мощный и практичный инструмент.

Верстайте на заказ и получайте деньги.

Получить в подарок->

Бесплатный тренинг "PHP для Создания Сайтов: Введение"

Что нужно знать для создания PHP-сайтов?

Ответ здесь. Только самое важное и полезное для начинающего веб-разработчика.

Узнайте, как создавать качественные сайты на PHP всего за 2 часа и 27 минут!

Записаться бесплатно->

Бесплатный курс "Сайт-Визитка За 15 уроков"

Создайте свой сайт за 3 часа и 30 минут.

После просмотра данного видеокурса у Вас на компьютере будет готовый к использованию сайт, который Вы сделали сами.

Вам останется лишь наполнить его нужной информацией и изменить дизайн (по желанию).

Получить в подарок->

Бесплатный курс "Основы HTML и CSS"

Изучите основы HTML и CSS менее чем за 4 часа.

После просмотра данного видеокурса Вы перестанете с ужасом смотреть на HTML-код и будете понимать, как он работает.

Вы сможете создать свои первые HTML-страницы и придать им нужный вид с помощью CSS.

Получить в подарок->

Бесплатный курс "Сайт на WordPress"

Хотите освоить CMS WordPress?

Получите уроки по дизайну и верстке сайта на WordPress.

Научитесь работать с темами и нарезать макет.

Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!

Получить в подарок->

Бесплатный курс "Основы работы с JavaScript"

Хотите изучить JavaScript, но не знаете, как подступиться?

После прохождения видеокурса Вы освоите базовые моменты работы с JavaScript.

Развеются мифы о сложности работы с этим языком, и Вы будете готовы изучать JavaScript на более серьезном уровне.

Получить в подарок->

Воспламенитель Кода: Сайт-Визитка на CodeIgniter

Курс предназначен для тех, кто знает основы HTML и CSS.

Изучив его, Вы сможете разрабатывать гибкие и функциональные Сайты-Визитки с панелью администратора.

Все, что нужно для разработки Сайта-Визитки: от шаблона и до переноса на хостинг.

Подробнее->

JavaScript и jQuery с нуля

Курс предназначен для тех, кто хочет повысить интерактивность и удобство своего сайта для посетителей.

Изучив его, Вы сможете создавать более красивые и функциональные сайты.

104 видеоурока: от основ JavaScript до готовых решений на jQuery.

Подробнее->

Повелитель PHP: кратчайший путь к мастерству без толстых учебников.

Курс предназначен для тех, кто хочет освоить язык PHP и свободно с ним работать.

Изучив его, Вы сможете при разработке сайтов решать любые задачи, требующие знаний PHP.

Подробнее->

*Наведите курсор мыши для приостановки прокрутки.


Применение функции к каждому элементу массива

Одна из частых задач, с которой приходится сталкиваться при работе с массивами данных - это ситуация, когда необходимо с каждым элементом массива выполнить некое действие или прогнать его через какую-либо функцию.

Иными словами, нам нужно произвести определенное преобразование для всего набора данных.

На помощь нам спешит функция под названием array_walk():


$names = array('firstname' => "Baba",
               'lastname'  => "O'Riley");

array_walk($names, function (&$value, $key)
{
    $value = htmlentities($value, ENT_QUOTES);
});

foreach ($names as $name)
{
    print "$name<br>";
}

На выходе получим:


Baba
O'Riley

Все хорошо, когда мы имеем дело с простыми массивами, но как быть, если у нас есть вложенные данные?

Для этого случая есть столь же удобная функция array_walk_recursive():


$names = array('firstnames' => array("Baba", "Bill"),
               'lastnames'  => array("O'Riley", "O'Reilly"));

array_walk_recursive($names, function (&$value, $key)
{
    $value = htmlentities($value, ENT_QUOTES);
});

foreach ($names as $nametypes)
{
    foreach ($nametypes as $name)
	{
        print "$name<br>";
    }
}

Результатом работы этого кода будет вывод на экран следующих данных:


Baba
Bill
O'Riley
O'Reilly

Детали

Очень часто для перебора элементов массива используются циклы. Один из основных вариантов - это цикл foreach.

Но, помимо него, можно воспользоваться функцией и функцией array_walk(), пример работы которой вы видели чуть выше.

Данная функция принимает массив и анонимную функцию обратного вызова, которая и занимается обработкой всех элементов массива.

Функция обратного вызова получает два параметра: значение и ключ. Кроме того, для нее предусмотрен и необязательный третий параметр с дополнительными данными, которые могут использоваться в этой же самой функции.

Пример ниже обеспечивает кодирование всех данных в массиве $names по правилам HTML.

Анонимная функция обратного вызова получает значения из массива, передает их функции htmlentities() для кодирования ключевых сущностей HTML и заносит результат в переменную $value:


$names = array('firstname' => "Baba",
               'lastname'  => "O'Riley");

array_walk($names, function (&$value, $key)
{
    $value = htmlentities($value, ENT_QUOTES);
});

foreach ($names as $name)
{
    print "$name\n";
}

Результат:


Baba
O'Riley

Функция array_walk() работает «по месту», т.е. не возвращает измененную копию массива. Что это значит для нас? Это значит, что если нам нужно на самом деле изменить элементы массива, то значения должны передаваться по ссылке.

В таких случаях, как в приведенном примере, перед именем параметра ставится символ &. Тем не менее это необходимо только тогда, когда вы хотите изменить массив - в противном случае амперсанд не используется.

Второй вариант - это работа с набором вложенных массивов. Здесь нам на выручку приходит функция array_walk_recursive():


$names = array('firstnames' => array("Baba", "Bill"),
               'lastnames'  => array("O'Riley", "O'Reilly"));

array_walk_recursive($names, function (&$value, $key)
{
    $value = htmlentities($value, ENT_QUOTES);
});

foreach ($names as $nametypes)
{
    foreach ($nametypes as $name)
	{
        print "$name\n";
    }
}

Результат будет следующий:


Baba
Bill
O'Riley
O'Reilly

При этом нужно помнить, что функция array_walk_recursive() передает функции обратного вызова только элементы, не являющиеся массивами, так что нам не придется изменять функцию обратного вызова при переходе с array_walk().

Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!


Смотрите также:

PHP: Получение информации об объекте или классе, методах, свойствах и наследовании

PHP: Получение информации об объекте или классе, методах, свойствах и наследовании

CodeIgniter: жив или мертв?

CodeIgniter: жив или мертв?

Функции обратного вызова, анонимные функции и механизм замыканий

Функции обратного вызова, анонимные функции и механизм замыканий

Слияние массивов. Преобразование массива в строку

Слияние массивов. Преобразование массива в строку

Деструктор и копирование объектов с помощью метода __clone()

Деструктор и копирование объектов с помощью метода __clone()

Эволюция веб-разработчика или Почему фреймворк - это хорошо?

Эволюция веб-разработчика или Почему фреймворк - это хорошо?

Магические методы в PHP или методы-перехватчики (сеттеры, геттеры и др.)

Магические методы в PHP или методы-перехватчики (сеттеры, геттеры и др.)

PHP: Удаление элементов массива

PHP: Удаление элементов массива

Ключевое слово final (завершенные классы и методы в PHP)

Ключевое слово final (завершенные классы и методы в PHP)

50 классных сервисов, программ и сайтов для веб-разработчиков

50 классных сервисов, программ и сайтов для веб-разработчиков

Наверх