Я пытаюсь вставить массив в 2-мерный массив в определенной позиции. Согласно руководству, я должен иметь возможность сделать это с помощью array_splice(), но он удаляет только содержимое моего принимающего массива без вставки.
Я хочу получить массив со всеми значениями (массивами) $ получающего массива плюс новое значение (массив).
Что я делаю не так??
ручная информация:
array array_splice (array & $ input, int $ offset [, int $ length [, mixed $ replacement = array()]])
Если длина указана и равна нулю, элементы не будут удалены. Если замена - это всего лишь один элемент, нет необходимости помещать array() вокруг> it, если только элемент не является самим массивом, объектом или NULL.
вход:
$newArray = array_splice($receivingArray, 0, 0, array($value));
result: $ newArray - пустой массив
вход:
$newArray = array_splice($receivingArray, 1, 0, array($value));
result: $ newArray - пустой массив
этот вход:
print_r($receivingArray);
print_r(array($value));
$newArray = array_splice($receivingArray, 1, 1, array($value));
print_r($newArray);
дает: (интересно)
Array
(
[0] => Array
(
[id] => 1
[primaryID] => 0
[category_id] => 1
[title] => sports
[description] =>
[selected] =>
[level] => 0
)
[1] => Array
(
[id] => 4
[primaryID] => 0
[category_id] => 0
[title] => programming
[description] =>
[selected] =>
[level] => 0
)
)
Array
(
[0] => Array
(
[id] => 2
[primaryID] => 1
[category_id] => 1
[title] => soccer
[description] =>
[selected] =>
[level] => 1
)
)
Array
(
[0] => Array
(
[id] => 4
[primaryID] => 0
[category_id] => 0
[title] => programming
[description] =>
[selected] =>
[level] => 0
)
)
Из документов для array_splice()
Возвращаемые значения
Возвращает массив, состоящий из извлеченных элементов.
$newArray = array_splice($receivingArray, 0, 0, array($value));
array_splice изменяет свой вклад, так что результаты вы ищете в $receivingArray
и не $newArray
Я пропустил тот факт, что array_slice() фактически не возвращает свой вывод, а скорее воздействует на сам принимающий массив, который передается по ссылке. Я не заметил, что есть амперы и перед первым параметром в ручной спецификации.
этот вход:
print_r($receivingArray);
print_r(array($value));
array_splice($receivingArray, 0, 0, array($value));
print_r($receivingArray);
дает правильный результат:
Array
(
[0] => Array
(
[id] => 1
[primaryID] => 0
[category_id] => 1
[title] => sports
[description] =>
[selected] =>
[level] => 0
)
[1] => Array
(
[id] => 4
[primaryID] => 0
[category_id] => 0
[title] => programming
[description] =>
[selected] =>
[level] => 0
)
)
Array
(
[0] => Array
(
[id] => 2
[primaryID] => 1
[category_id] => 1
[title] => soccer
[description] =>
[selected] =>
[level] => 1
)
)
Array
(
[0] => Array
(
[id] => 1
[primaryID] => 0
[category_id] => 1
[title] => sports
[description] =>
[selected] =>
[level] => 0
)
[1] => Array
(
[id] => 2
[primaryID] => 1
[category_id] => 1
[title] => soccer
[description] =>
[selected] =>
[level] => 1
)
[2] => Array
(
[id] => 4
[primaryID] => 0
[category_id] => 0
[title] => programming
[description] =>
[selected] =>
[level] => 0
)
)
$receivingArray
. что вы пробовали (код) и каков ваш ожидаемый результат. не весь массив, а его часть, которая имеет смысл для всех нас.