Функция `array_splice()` — один из самых мощных инструментов для работы с массивами в PHP. В отличие от многих других функций, которые просто возвращают новый измененный массив, `array_splice()` изменяет исходный массив напрямую. Это позволяет удалять, заменять или вставлять новые элементы в любую часть массива.
В этом тренажере мы пройдем путь от самых простых операций удаления до более сложных сценариев с заменой и вставкой элементов. Вы научитесь управлять массивами, точно контролируя их содержимое. Задания построены так, чтобы постепенно раскрыть все возможности функции и показать распространенные ошибки, которых стоит избегать. Удачи!
- Модуль 1: Основы синтаксиса PHP
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Модуль 4: Условные конструкции
- Модуль 5: Циклы
- Модуль 6: Массивы
- Индексированные массивы.
- Ассоциативные массивы.
- Многомерные массивы.
- Добавление элементов в массив.
- Удаление элементов из массива.
- Функция count().
- Функция array_push() и array_pop().
- Функция array_shift() и array_unshift().
- Функция array_merge().
- Функция array_slice().
- Функция array_splice().
- Функция in_array().
- Функция array_search().
- Функция array_keys() и array_values().
- Функция array_unique().
- Функция array_reverse().
- Сортировка: sort(), rsort().
- Сортировка: asort(), arsort().
- Сортировка: ksort(), krsort().
- Функция array_map().
- Функция array_filter().
- Функция array_reduce().
- Функция array_walk().
- Функция array_column().
- Деструктуризация массивов.
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 20: Работа с базами данных MySQLi
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 26: Генераторы и итераторы
- Модуль 27: Reflection API
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
Основы: удаление части массива
В коде есть массив букв. Ваша задача — использовать функцию `array_splice()` для удаления всех элементов, начиная со второго индекса (то есть, с элемента 'c'). Заполните пропуски, чтобы выполнить эту операцию.
<?php
$letters = ['a', 'b', 'c', 'd', 'e'];
// Удаляем все, начиная с индекса 2
input1S(input2S, 2);
print_r($letters);
?>Удаление определенного количества элементов
Теперь усложним задачу. В коде используется третий аргумент функции `array_splice()`. Проанализируйте код и напишите в поле ответа, что именно будет выведено на экран в результате его выполнения.
<?php
$numbers = [10, 20, 30, 40, 50];
// Начиная с индекса 1, удаляем 2 элемента
array_splice($numbers, 1, 2);
print_r($numbers);
?>Что возвращает array_splice?
Это один из самых важных моментов в работе с `array_splice()`. Функция не только изменяет исходный массив, но и возвращает значение. Посмотрите на код и выберите вариант, который соответствует тому, что будет выведено на экран.
<?php
$fruits = ['apple', 'banana', 'cherry', 'date'];
$removed = array_splice($fruits, 1, 2);
// Что будет в переменной $removed?
print_r($removed);
?>Исправление распространенной ошибки
Программист хотел удалить элемент 'green' из массива, но допустил логическую ошибку, из-за которой массив `$colors` в итоге содержит не то, что ожидалось. Найдите и исправьте строку с ошибкой.
<?php$colors = ['red', 'green', 'blue']; // Неправильная попытка удалить 'green'$colors = array_splice($colors, 1, 1); print_r($colors);?>Замена элементов с помощью банка
Функция `array_splice()` также умеет заменять элементы. Заполните пропуски, перетащив токены из банка, чтобы заменить два элемента массива `$data` (начиная с индекса 1) на один новый элемент `'Z'`.
<?php
$data = ['A', 'B', 'C', 'D'];
// Заменяем 2 элемента с индекса 1 на 'Z'
array_splice($data, input1S, input2S, input3S);
print_r($data);
?>Вставка элементов без удаления
Одна из полезных возможностей `array_splice()` — вставка элементов без удаления существующих. Дополните код, заполнив пропуск, чтобы вставить массив `['x', 'y']` в середину массива `$letters` после элемента 'b'.
<?php
$letters = ['a', 'b', 'c', 'd'];
$new_items = ['x', 'y'];
// Вставляем $new_items после 'b' (в позицию с индексом 2)
array_splice($letters, 2, input1S, $new_items);
print_r($letters);
?>Отрицательное смещение
Смещение (второй параметр) в `array_splice()` может быть отрицательным. Это позволяет вести отсчет с конца массива. Предскажите, что выведет код после выполнения операции с отрицательным смещением.
<?php
$items = [10, 20, 30, 40, 50];
// Начинаем с предпоследнего элемента (-2) и удаляем 1 элемент
array_splice($items, -2, 1);
print_r($items);
?>Соберите скрипт для сложной модификации
Соберите из частей работающий PHP-скрипт. Цель: в массиве греческих букв удалить 'beta' и 'gamma', а на их место вставить латинскую 'X'. В банке есть лишние строки, которые не подходят.
print_r($greek);$greek = ['alpha', 'beta', 'gamma', 'delta'];?>array_splice($greek, 1, 2, 'X');<?phparray_slice($greek, 1, 2);echo $greek;