Array_splice удаление из массива, замена в массиве
Функция array_splice, что такое функция array_splice, рассмотрим примеры работы, немного теории.
О функции array_splice подробное описание.
- Немного теории о функции array_splice
- Применение функции array_splice с элементами
"array,0,0,значение" - Применение функции array_splice с элементами
"array,(положительное),0,значение" - Добавление значения в конец массива array_splice
- Применение функции array_splice с элементами
"array,(отрицательное),0,значение" - Применение функции array_splice с элементами
"array,0,(положительное),значение" - Применение функции array_splice с элементами
"array,0,(отрицательное),значение" - Применение функции array_splice с элементами
"array,(положительное),(положительное),значение" - Применение функции array_splice с элементами
"array,(положительное),(положительное),array"
+ см. обрезка массива с использованием array_splice или array_slice. Отсутствует 3 и 4 элемент в функции...
Еще осталась парочка не охваченных пунктов, но я чЁтА задолбался...
Немного теории о функции array_splice
Вообще, в учебнике написано так :
И нам нужно рассмотреть саму функцию array_splice , что внутри:
array array_splice ( array &input, int offset [, int length [, array replacement]] )
И... учите языки(например английский) - пригодится...
Как видим в функции несколько параметров(здесь показано 4)! Попробуем разобраться что это такое.
array &input - это исходный массив.
int offset - первое слово это int, что означает "integer" - целое число, offset - сдвиг, и у нас получается "сдвиг с числа".
int length - int разобрали выше, length - длина, длина элемента выраженное в целых числах
array replacement - возможно применение массива.
И... в зависимости от комбинации флагов 3-4 функция array_splice может выполнять разные задачи, это все мы рассмотрим уже на примерах.
Применение функции array_splice с элементами 0,0,значение
Для того, чтобы продемонстрировать работу функции нам потребуется первая позиция(array &input) - основной массив.
int offset = 0
int length = 0
array replacement = <red>привет</red> , и покрасим его в красный цвет
В собранном виде:
$array = array("раз", "два", "три", "четыре", "пять" , "шесть" , "семь");
array_splice($array, 0, 0, '<red>привет</red>');
$perem_100 = print_r($array, true); // print_r
echo $perem_100;//echo
Результат:
(
[0] =>[1] => раз
[2] => два
[3] => три
[4] => четыре
[5] => пять
[6] => шесть
[7] => семь
)
Как видим, что наше слово "привет" попало в нулевую ячейку массива. Все остальные ячейки массива сдвинулись на +1.
Применение функции array_splice с элементами 0,1,значение
Повторим тоже самое, что в выше идущем пункте, только изменим второй элемент a функции array_splice на 1.
int offset = 1
int length = 0
array replacement = <red>привет</red> , и покрасим его в красный цвет
Результат:
(
[0] => раз
[1] =>[2] => два
[3] => три
[4] => четыре
[5] => пять
[6] => шесть
[7] => семь
)
Как мы здесь видим, что наш массив изменился, функция array_splice сработала таким образом, что поставила наше слово привет между нулевой и первой ячейкой
И для закрепления :
Теперь увеличим offset еще на единицу и посмотрим, как сработает наша функция array_splice
Результат:
(
[0] => раз
[1] => два
[2] =>[3] => три
[4] => четыре
[5] => пять
[6] => шесть
[7] => семь
)
Далее мы видим, что функция сработала ожидаемо, сдвинув ячейку 2 и поместив в неё наше слово привет
Добавление значения в конец массива array_splice
Если нам требуется поставить значение в конец массива, но мы не знаем количество ячеек в массиве, ведь оно динамическое, как в таком случае вставить в масив данные в самый конец исходного массива.
Во второй элемент функции array_splice надо поставить посчитанное количество ячеек массива и поставить эту переменную в
int offset = count($array)
int length = 1
array replacement = <red>привет</red> , и покрасим его в красный цвет
array_splice($array, count($array), 0, "<red>привет</red>");
Результат:
(
[0] => раз
[1] => два
[2] => три
[3] => четыре
[4] => пять
[5] => шесть
[6] => семь
[7] =>)
После 4 пункта можно сделать вывод
Изменение offset в функции array_splice в сторону уменьшения length = 0
Напишем вводные, сразу для трех примеров использования во втором элементе отрицательного числа:
int offset = -1,-2,-3)
int length = 0
array replacement = <red>привет</red> , и покрасим его в красный цвет
Результат:
(
[0] => раз
[1] => два
[2] => три
[3] => четыре
[4] => пять
[5] => шесть
[6] =>[7] => семь
)
Результат:
(
[0] => раз
[1] => два
[2] => три
[3] => четыре
[4] => пять
[5] =>[6] => шесть
[7] => семь
)
Результат:
(
[0] => раз
[1] => два
[2] => три
[3] => четыре
[4] =>[5] => пять
[6] => шесть
[7] => семь
)
При изменении offset в сторону уменьшения "- 1" и length = 0, отсчитает от конца столько, чему равно offset и сдвинет все ячейки с этого значение на +1 и вставит туда replacement(привет)
Применение функции array_splice с элементами "0,(положительное),значение"
Следующим нашим шагом будет изменение length в функции array_splice при нулевом offset
int offset = 0
int length = (1,2)
array replacement = <red>привет</red> , и покрасим его в красный цвет
Результат:
(
[0] =>[1] => два
[2] => три
[3] => четыре
[4] => пять
[5] => шесть
[6] => семь
)
Результат:
(
[0] =>[1] => три
[2] => четыре
[3] => пять
[4] => шесть
[5] => семь
)
При изменении length в сторону увеличения + 1 количество ячеек будет удалено с самого начала, с нулевой ячейки на величину length и все удаленное будет заменено на replacement(привет)
Изменение length в функции array_splice в сторону уменьшения/
Следующим тестом будем уменьшать length на 1 и посмотрим, как будет вести наша функция…
int offset = 0
int length = (-1,-2,-3)
array replacement = <red>привет</red> , и покрасим его в красный цвет
Результат:
(
[0] =>[1] => семь
)
Результат:
(
[0] =>[1] => шесть
[2] => семь
)
Результат:
(
[0] =>[1] => пять
[2] => шесть
[3] => семь
)
При изменении length в сторону уменьшения - 1 количество ячеек будет оставлено , с конца на величину length, а все остальное будет замена на replacement(привет)
Применение функции array_splice с элементами
"array,(положительное),(положительное),значение"
Далее уже не будем приводить столько вариантов работы... думаю, вы мне и так поверите...
int offset = положительное
int length = положительное
array replacement = <red>привет</red> , и покрасим его в красный цвет
array_splice($array, 1, 3, '<red>привет</red>');
(
[0] => раз
[1] =>[2] => пять
[3] => шесть
[4] => семь
)
array_splice($array, 2, 2, '<red>привет</red>');
(
[0] => раз
[1] => два
[2] =>[3] => пять
[4] => шесть
[5] => семь
)
array_splice($array, 3, 1, '<red>привет</red>');
(
[0] => раз
[1] => два
[2] => три
[3] =>[4] => пять
[5] => шесть
[6] => семь
)
В случае, когда offset положительное и length положительное , то отсчитываем этот offset от начала и заменяем length на значение replacement.
Применение функции array_splice с элементами
"array,(положительное),(положительное),array"
И на последок, в 4 значении в значении поставим массив.
Вспомним наш первоначальный массив :
Второй массив, поставим в значение:
Используем из предыдущего пункта :
array_splice($array, 2, 2, '<red>привет</red>');
соберем все вместе :
$array = array("раз", "два", "три", "четыре", "пять" , "шесть" , "семь");
$array_2 = array("ячейка 1", "ячейка 2", "ячейка 3");
array_splice($array, 2, 2, $array_2);
$array = print_r($array, true);
echo $array;
Результат:
(
[0] => раз
[1] => два
[2] => ячейка 1
[3] => ячейка 2
[4] => ячейка 3
[5] => пять
[6] => шесть
[7] => семь
)