Я пытаюсь вставить массив в двухмерный массив в определенной позиции.
Согласно инструкции, я должен быть в состоянии сделать это с помощью 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
)
)
Из документов для 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
)
)