array_splice (): вставить массив в 2-мерный массив по индексу [PHP]

Я пытаюсь вставить массив в двухмерный массив в определенной позиции.
Согласно инструкции, я должен быть в состоянии сделать это с помощью array_splice (), но он только удаляет содержимое моего принимающего массива без вставки.

Я хочу получить массив со всеми значениями (массивами) $ receiveArray плюс новое значение (массив).

Что я делаю неправильно??

ручная информация:

массив array_splice (массив &$ input, int $ offset [, int $ length [, mixed $ replace = array ()]])

Если длина указана и равна нулю, элементы не будут удалены.
Если замена — только один элемент, нет необходимости помещать array () вокруг него>, если только элемент не является самим массивом, объектом или NULL.

вход:

$newArray = array_splice($receivingArray, 0, 0, array($value));

результат: $ newArray — пустой массив

вход:

$newArray = array_splice($receivingArray, 1, 0, array($value));

результат: $ 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
)

)

1

Решение

Из документов для array_splice()

Возвращаемые значения

Возвращает массив, состоящий из извлеченных элементов.

$newArray = array_splice($receivingArray, 0, 0, array($value));

array_splice изменяет свой ввод, поэтому результаты, которые вы ищете, находятся в $receivingArray и не $newArray

2

Другие решения

Я упустил тот факт, что 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
)

)
1

По вопросам рекламы [email protected]