В программировании в целом и при создании сайтов в частности нам все время приходится иметь дело с массивами.
Например, мы получаем данные из базы в виде массива и выводим их на сайт. Также мы можем собирать какие-то данные в массив и в последствии захотеть как-то их модифицировать.
Обычно, чтобы просто вывести данные из массива, достаточно пройтись по нему циклом, например foreach.
Однако, часто бывает так, что данные в массиве нам нужно изменить или как-то обработать.
Для этих задач можно также использовать цикл, но можно сделать это куда более элегантно и удобно, написав при этом меньше кода.
Сегодня рассмотрим, как применить какое-либо действие к каждому элементу массива.
Вариант 1. Изменяем элементы массива в цикле.
Для начала предлагаю создать массив и заполнить его.
Я не буду делать это вручную, а воспользуюсь циклом. Вот так.
<?php
$my_array = [];
for($i = 0; $i <= 9; $i++){
array_push($my_array, $i+1);
}
?>
Если сейчас мы выведем наш массив на экран, то увидим следующее.
<pre> <?php print_r($my_array); ?> </pre>

Что если теперь мы захотим изменить каждый элемент массива, умножив его значение на 2.
Мы можем сделать это, воспользовавшись циклом foreach. Мы будем перебирать массив и умножать каждый его элемент на 2.
<?php
$new_array = [];
foreach($my_array as $item){
$new_array[] = $item * 2;
}
?>
Выведем результат на экран.
<pre> <?php print_r($new_array); ?> </pre>

Вариант 2. Изменяем элементы массива при помощи array_map().
Эта функция принимает на вход несколько параметров:
- callback функцию, которая будет обрабатывать каждый элемент массива (можно передать имя функции, а можно прописать анонимную функцию в качестве передаваемого параметра);
- массив, элементы которого мы изменяем;
- дополнительные массивы для обработки callback-функцией (необязательный параметр).
Функция возвращает преобразованный массив. Если функции передается один массив, то ключи аргументов будут сохранены (что иногда может иметь большое значение).
Итак, давайте посмотрим, как это может выглядеть. В моем примере я не создаю отдельную callback-функцию, а передаю анонимную функцию в качестве аргумента.
<?php
$new_array1 = array_map(function($n){
return ($n * 2);
}, $my_array);
?>
Выведем результат на экран.

На следующей картинке покажу вам разницу в результатах.

Разница в изменении значений элементов массива при использовании foreach и array_map(), когда ключи идут не по порядку.
Попробуйте проделать все это сами, чтобы прочувствовать результат.
Не ограничивайтесь перебором массивов в циклах, потому что для некоторых задач уже существуют специальные функции, которые решают эти задачи гораздо более эффективно.
До новых встреч в новых статьях. Понравилась статья? — Ставьте лайк, делитесь с друзьями, оставляйте комменты.



