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

1

Я пытаюсь вставить массив в 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
        )

)
  • 0
    Во-первых, не нужно выводить так много массива. сбивает с толку. Просто покажите начальный $receivingArray . что вы пробовали (код) и каков ваш ожидаемый результат. не весь массив, а его часть, которая имеет смысл для всех нас.
  • 0
    хорошо, плохо редактирую, спасибо
Показать ещё 1 комментарий
Теги:
arrays
array-splice

2 ответа

1
Лучший ответ

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

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

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

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

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

  • 0
    да, это была проблема. большое спасибо.
0

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

)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню