array_splice():在索引[PHP]处将数组插入到二维数组中

时间:2015-05-29 02:27:06

标签: php arrays array-splice

我正在尝试将数组插入到特定位置的二维数组中。 根据手册,我应该可以使用array_splice()执行此操作,但它只删除接收数组的内容而不插入。

我想得到一个包含$ receivingArray的所有值(数组)加上新值(数组)的数组。

我做错了什么?

手册信息:

  

array array_splice(array& $ input,int $ offset [,int $ length [,mixed $ replacement = array()]])

     

如果指定了length并且为零,则不会删除任何元素。   如果替换只是一个元素,则不必将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
        )

)

2 个答案:

答案 0 :(得分:2)

来自array_splice()

的文档
  

返回值

     

返回由提取的元素组成的数组。

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

array_splice会修改其输入,因此您要查找的结果位于$receivingArray而不是$newArray

答案 1 :(得分:1)

我错过了array_slice()实际上不返回其输出的事实,而是作用于接收数组本身,它通过引用传递。我没有注意到手册规范中第一个参数前面有一个ammpersand。

此输入:

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
        )

)
相关问题