← Назад к вопросам

Как работать с массивами и их функциями?

1.3 Junior🔥 271 комментариев
#PHP Core

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI7 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Работа с массивами в PHP: ключевые аспекты и функции

В PHP массивы — это гибкие структуры данных, которые могут выступать как индексированные списки, так и ассоциативные карты (хэш-таблицы). Работа с ними включает создание, модификацию, итерацию и применение встроенных функций.

Типы массивов и создание

PHP поддерживает два основных типа массивов:

  • Индексированные массивы — с числовыми ключами, начинающимися с 0.
  • Ассоциативные массивы — с строковыми ключами, представляющими пары "ключ-значение".

Создать массив можно несколькими способами:

// Явное создание через array() или []
$indexed = array('яблоко', 'банан', 'апельсин');
$assoc = ['name' => 'Иван', 'age' => 30];

// Динамическое добавление элементов
$dynamic = [];
$dynamic[] = 'первый элемент'; // ключ 0
$dynamic['ключ'] = 'значение';

Ключевые функции для работы с массивами

PHP предлагает более 100 встроенных функций для манипуляции массивами. Их можно разделить на категории:

1. Модификация структуры

  • array_push() / array_pop() — добавление/удаление с конца.
  • array_unshift() / array_shift() — операции с началом массива.
  • array_splice() — замена или удаление части массива.
$stack = [1, 2, 3];
array_push($stack, 4); // [1, 2, 3, 4]
$last = array_pop($stack); // $last = 4, $stack = [1, 2, 3]

2. Объединение и разделение

  • array_merge() — слияние массивов.
  • array_chunk() — разбиение на части.
  • array_slice() — выборка отрезка.
$arr1 = ['a', 'b'];
$arr2 = ['c', 'd'];
$merged = array_merge($arr1, $arr2); // ['a', 'b', 'c', 'd']

3. Поиск и фильтрация

  • in_array() — проверка наличия значения.
  • array_search() — поиск ключа по значению.
  • array_filter() — фильтрация по callback-функции.
$numbers = [1, 2, 3, 4, 5];
$even = array_filter($numbers, fn($n) => $n % 2 === 0); // [2, 4]

4. Итерация и преобразование

  • array_map() — применение функции к каждому элементу.
  • array_reduce() — свёртка массива к единственному значению.
  • array_walk() — модификация элементов с сохранением ключей.
$squared = array_map(fn($x) => $x * $x, [1, 2, 3]); // [1, 4, 9]

5. Сортировка

  • sort() / rsort() — сортировка по значениям.
  • asort() / arsort() — сортировка ассоциативных массивов с сохранением ключей.
  • ksort() / krsort() — сортировка по ключам.
$data = ['яблоко' => 5, 'банан' => 2];
asort($data); // ['банан' => 2, 'яблоко' => 5] — по возрастанию значений

Практические рекомендации

  1. Используйте современный синтаксис — с PHP 5.4 предпочтительны короткие скобки [].
  2. Оптимизируйте производительностьisset($array[$key]) быстрее, чем array_key_exists() для проверки ключей.
  3. Комбинируйте функции для сложных операций, но избегайте избыточных вложенных вызовов.
  4. Работайте с большими массивами через итераторы (например, ArrayIterator) для экономии памяти.
  5. Применяйте деструктуризацию (с PHP 7.1) для удобного извлечения значений:
$data = ['name' => 'Анна', 'age' => 25];
['name' => $name, 'age' => $age] = $data;
echo $name; // 'Анна'

Пример комплексного использования

// Обработка данных пользователей
$users = [
    ['id' => 1, 'name' => 'Алексей', 'score' => 85],
    ['id' => 2, 'name' => 'Мария', 'score' => 92],
    ['id' => 3, 'name' => 'Игорь', 'score' => 78],
];

// Фильтрация и сортировка
$topUsers = array_filter($users, fn($user) => $user['score'] > 80);
usort($topUsers, fn($a, $b) => $b['score'] <=> $a['score']);

// Извлечение имён
$names = array_column($topUsers, 'name'); // ['Мария', 'Алексей']

Важно понимать, что многие функции (например, sort()) работают по ссылке и изменяют исходный массив, в то время как другие (array_map(), array_filter()) возвращают новый массив. Всегда проверяйте документацию для понимания побочных эффектов. Эффективное использование массиво-ориентированных функций позволяет писать лаконичный, выразительный и производительный код, что особенно важно в backend-разработке на PHP.