Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在数组的x位置插入数组_Php_Arrays - Fatal编程技术网

Php 在数组的x位置插入数组

Php 在数组的x位置插入数组,php,arrays,Php,Arrays,我们在$r中有一个范围数组: $r = array( array(3,5), array(36,54) ); 我们希望在我们的范围中添加一个新范围: $n = array(11, 19); 我们还希望对$r进行排序,因此新范围应该插入到1位置。如果我们使用array\u-splice,结果将添加11和19作为两个新元素: array_splice($r, 1, 0, $n); // output: array( array(3,5), 11, 19, array(36,54) ) 我们如何

我们在
$r
中有一个范围数组:

$r = array( array(3,5), array(36,54) );
我们希望在我们的范围中添加一个新范围:

$n = array(11, 19);
我们还希望对
$r
进行排序,因此新范围应该插入到
1
位置。如果我们使用
array\u-splice
,结果将添加
11
19
作为两个新元素:

array_splice($r, 1, 0, $n);
// output: array( array(3,5), 11, 19, array(36,54) )
我们如何才能获得如下所示的预期结果

// output: array( array(3,5), array(11,19), array(36,54) )

您可以在另一个数组中使用新范围包装数组:

array_splice($r, 1, 0, array($n));
输出:

array(3) {
  [0]=>
  array(2) {
    [0]=>
    int(3)
    [1]=>
    int(5)
  }
  [1]=>
  array(2) {
    [0]=>
    int(11)
    [1]=>
    int(19)
  }
  [2]=>
  array(2) {
    [0]=>
    int(36)
    [1]=>
    int(54)
}

您可以在另一个数组中使用新范围包装数组:

array_splice($r, 1, 0, array($n));
输出:

array(3) {
  [0]=>
  array(2) {
    [0]=>
    int(3)
    [1]=>
    int(5)
  }
  [1]=>
  array(2) {
    [0]=>
    int(11)
    [1]=>
    int(19)
  }
  [2]=>
  array(2) {
    [0]=>
    int(36)
    [1]=>
    int(54)
}

这可能比你想象的更容易。阅读时,您会看到
$replacement
参数是一个数组,应该包含应该插入数组中的所有元素

考虑下面的代码:

array_splice($r, 1, 0, array(11, 19));
这不会将
数组(11,19)
作为一个元素插入数组,而是将每个
11
19
作为两个元素插入数组

您可能想做的是:

array_splice($r, 1, 0, array(array(11, 19)));
或者,在你的具体例子中:

array_splice($r, 1, 0, array($n));
或者,您可以简单地追加数组,然后对其进行完全重新排序(这可能效率不高,但对于小数据集来说更容易):


这可能比你想象的更容易。阅读时,您会看到
$replacement
参数是一个数组,应该包含应该插入数组中的所有元素

考虑下面的代码:

array_splice($r, 1, 0, array(11, 19));
这不会将
数组(11,19)
作为一个元素插入数组,而是将每个
11
19
作为两个元素插入数组

您可能想做的是:

array_splice($r, 1, 0, array(array(11, 19)));
或者,在你的具体例子中:

array_splice($r, 1, 0, array($n));
或者,您可以简单地追加数组,然后对其进行完全重新排序(这可能效率不高,但对于小数据集来说更容易):


如果只是希望它们按照范围中第一个值的顺序排列,那么可以执行以下操作

$r = array( array(3,5), array(36,54));
$r[] = array(11,19);
print_r($r);
sort($r);
print_r($r);
结果:

未排序:

Array
(
    [0] => Array
        (
            [0] => 3
            [1] => 5
        )

    [1] => Array
        (
            [0] => 36
            [1] => 54
        )

    [2] => Array
        (
            [0] => 11
            [1] => 19
        )

)
分类:

Array
(
    [0] => Array
        (
            [0] => 3
            [1] => 5
        )

    [1] => Array
        (
            [0] => 11
            [1] => 19
        )

    [2] => Array
        (
            [0] => 36
            [1] => 54
        )

)

如果您只是希望它们按照范围内第一个值的顺序排列,那么您可以执行以下操作

$r = array( array(3,5), array(36,54));
$r[] = array(11,19);
print_r($r);
sort($r);
print_r($r);
结果:

未排序:

Array
(
    [0] => Array
        (
            [0] => 3
            [1] => 5
        )

    [1] => Array
        (
            [0] => 36
            [1] => 54
        )

    [2] => Array
        (
            [0] => 11
            [1] => 19
        )

)
分类:

Array
(
    [0] => Array
        (
            [0] => 3
            [1] => 5
        )

    [1] => Array
        (
            [0] => 11
            [1] => 19
        )

    [2] => Array
        (
            [0] => 36
            [1] => 54
        )

)

您是否尝试将另一个维度添加到$n$n=array(array(11,19))和拼接?您是否尝试过在$n中添加另一个维度$n=array(array(11,19)),然后拼接它?