【问题标题】:array_splice() : Insert array into 2-dimensional array at index [PHP]array_splice() :将数组插入到索引处的二维数组中 [PHP]
【发布时间】:2015-08-11 18:18:37
【问题描述】:

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

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

我做错了什么??

手册信息:

array array_splice ( array &$input , int $offset [, int $length [, mixed $replacement = 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
        )

)

【问题讨论】:

  • 首先不要给出这么多的数组输出。令人困惑。只需显示初始 $receivingArray。您尝试了什么(代码)以及您的预期输出。不是整个数组,只是其中的一部分,对我们所有人都有意义。
  • 好的,编辑不好,谢谢
  • 您找到了解决方案。现在不需要做。谢谢

标签: php arrays array-splice


【解决方案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
            )
    
    )
    

    【讨论】:

      猜你喜欢
      • 2017-02-11
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      相关资源
      最近更新 更多