0Pricing
PHP Academy · Урок

Функции преобразования массивов

Применяйте array_map, array_filter и array_reduce.

«Функции преобразования массивов» — бесплатный урок PHP Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.

Функциональные преобразования массивов

PHP предоставляет три мощные функции высшего порядка для преобразования массивов без явных циклов:

  • array_map() — преобразует каждый элемент
  • array_filter() — оставляет элементы, прошедшие проверку
  • array_reduce() — сводит массив к одному значению

array_map()

Применяйте функцию обратного вызова к каждому элементу и возвращайте новый массив:

<?php
$prices = [10, 20, 30, 40];

$doubled = array_map(fn($p) => $p * 2, $prices);
print_r($doubled); // [20, 40, 60, 80]

// Multiple arrays
$a = [1, 2, 3];
$b = [10, 20, 30];
$sums = array_map(fn($x, $y) => $x + $y, $a, $b);
print_r($sums); // [11, 22, 33]

array_filter()

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

<?php
$numbers = [1, 2, 3, 4, 5, 6];

$evens = array_filter($numbers, fn($n) => $n % 2 === 0);
print_r($evens); // [1=>2, 3=>4, 5=>6] — keys preserved!

$reindexed = array_values($evens); // re-index

$mixed = [0, 'hello', '', null, false, 42];
print_r(array_filter($mixed)); // [1=>'hello', 5=>42]

array_reduce()

Сводите массив к одному значению, последовательно применяя функцию обратного вызова:

<?php
$cart = [
    ['name' => 'Widget', 'price' => 10],
    ['name' => 'Gadget', 'price' => 25],
    ['name' => 'Doohickey', 'price' => 5],
];

$total = array_reduce($cart, fn($carry, $item) => $carry + $item['price'], 0);
echo $total;  // 40

Цепочка преобразований

Объединяйте операции преобразования, фильтрации и свёртки в выразительные конвейеры обработки данных:

<?php
$scores = [45, 80, 30, 90, 55, 70];

$passingAvg = array_sum(
    array_filter($scores, fn($s) => $s >= 50)
) / count(array_filter($scores, fn($s) => $s >= 50));

echo $passingAvg;  // 74.75

array_map с ключами

array_map не передаёт ключи. Используйте array_walk, когда нужны и ключ, и значение:

<?php
$prices = ['apple' => 1.0, 'banana' => 0.5, 'cherry' => 2.0];

$formatted = [];
array_walk($prices, function($price, $name) use (&$formatted) {
    $formatted[$name] = '$' . number_format($price, 2);
});

print_r($formatted);

array_chunk()

Разделяйте массив на части заданного размера:

<?php
$items = range(1, 10);
$batches = array_chunk($items, 3);
print_r($batches);
// [[1,2,3], [4,5,6], [7,8,9], [10]]

array_combine()

Создавайте ассоциативный массив, объединяя массив ключей с массивом значений:

<?php
$keys   = ['name', 'age', 'city'];
$values = ['Alice', 30, 'London'];

$person = array_combine($keys, $values);
print_r($person);
// ['name'=>'Alice','age'=>30,'city'=>'London']

Объединение массивов с помощью array_map

В PHP нет встроенной функции объединения массивов, но array_map(null, ...) создаёт структуру, похожую на результат такого объединения:

<?php
$names  = ['Alice', 'Bob'];
$scores = [90, 85];

$zipped = array_map(null, $names, $scores);
print_r($zipped);
// [['Alice', 90], ['Bob', 85]]

array_map сохраняет ключи

При работе с одним массивом array_map сохраняет ключи. Используйте перенумерацию элементов массива:

<?php
$assoc = ['a' => 1, 'b' => 2, 'c' => 3];

$result = array_map(fn($v) => $v * 10, $assoc);
print_r($result);
// ['a'=>10, 'b'=>20, 'c'=>30] — keys preserved

array_sum и array_product

Быстрые вспомогательные функции свёртки для числовых массивов:

<?php
$nums = [1, 2, 3, 4, 5];

echo array_sum($nums);      // 15
echo array_product($nums);  // 120 (1*2*3*4*5)

// Works with floats too
$prices = [1.5, 2.5, 3.0];
echo array_sum($prices);    // 7.0

Быстрая проверка

Какая функция применяет callback-функцию к каждому элементу и возвращает новый массив?

Повторение: функции преобразования массивов

Краткое содержание:

  • array_map() — преобразовать каждый элемент в новый массив
  • array_filter() — оставить элементы, соответствующие условию
  • array_reduce() — свернуть массив в одно накопленное значение
  • array_chunk() — разделить массив на подмассивы
  • array_combine() — создать ассоциативный массив из ключей и значений
  • array_sum/product() — быстро выполнить свёртку числовых данных

Часто задаваемые вопросы

Урок «Функции преобразования массивов» бесплатный?

Да — полный текст урока «Функции преобразования массивов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Функции преобразования массивов»?

Применяйте array_map, array_filter и array_reduce. Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать PHP Academy?

Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Функции преобразования массивов»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке PHP Academy?

Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Индексированные и ассоциативные массивы
  2. Многомерные массивы
  3. Сортировка и поиск в массивах
  4. Функции преобразования массивов
← Назад к PHP Academy