Для тех, у кого, возможно, больше опыта в более приятных (не @ me 😎 🙉 ) языках, таких как Javascript, объединение в ассоциативный массив в PHP может показаться немного сложным.
В javascript мы могли бы просто вызвать array.splice и указать наш индекс и смещение, и это сработало бы. Javascript не волнует, что это ассоциативный массив (объект) или индексированный массив, он просто работает.
PHP немного сложнее. Индексированные массивы и ассоциативные массивы принципиально отличаются друг от друга.
Это нормально, хотя есть довольно простой способ сделать это. И я сделал небольшую вспомогательную функцию, чтобы завершить это;
Как это работает
Я смоделировал эту вспомогательную функцию на основе встроенного метода array_splice , ключевым отличием которого является второй параметр, который теперь является строковым ключом, а не числовым индексом.
С помощью данного строкового ключа мы можем затем выполнить поиск по ключам ассоциативного массива для индекса, соответствующего этому ключу.
Если мы не найдем индекс в массиве, просто вернем исходный входной массив. (Эта часть – своего рода приключение на выбор. Возможно, вместо этого вы захотите вернуть значение false или ошибку.)
Имея в руках индекс, теперь мы можем эффективно разделить наш ассоциативный массив на 3 части;
- Срез “до”, перед индексом нашего ключа
- Заменяющий срез
- Срез “после”, после индекса нашего ключа, плюс длина
Наконец, все, что остается, – это объединить три элемента вместе по порядку, используя array_merge .
И это все!
Обратите внимание, что во встроенном методе array_splice длина $ и $замена параметры являются необязательными. Это можно было бы воспроизвести, но давайте будем честны, это не очень ценно.
Оригинал: “https://dev.to/sebtoombs/php-splice-into-an-associative-array-51cl”