Array_slice()在嵌套数组上无法正常工作

时间:2020-02-25 11:36:09

标签: php arrays multidimensional-array slice

因此,我正在设计一个函数,该函数可以通过扩展运算符(...$arg)接受多个参数

,但它也可以采用简单的输入数组。 我想使用array方法访问array_slice()的第一个元素,但是它不能按预期工作:

    // This is what the spread argument passes into the function if it gets a single array
    $arg = [
      ['value1', 'value2', 'valueN'],  
    ];

    // Accessing first element via array_slice:
    var_export( array_slice($arg, 0, 1) );

预期结果:

     array (
       0 => 'value1',
       1 => 'value2',
       2 => 'valueN',
     )

结果基本上等于输入数组:

    array (
      0 => 
      array (
        0 => 'value1',
        1 => 'value2',
        2 => 'valueN',
      ),
    )

我知道我可以简单地访问0th元素($arg[0])来获得第一项,但是我很好奇array_slice()为什么不能按预期工作。我在这里想念什么?

2 个答案:

答案 0 :(得分:2)

您期望数组中的第一个值。 array_slice返回切片的数组。您可以使用array_shift代替,它将数组的第一个值移开并返回。

print_r(array_shift($arg));

输出:

array (
       0 => 'value1',
       1 => 'value2',
       2 => 'valueN',
     )

答案 1 :(得分:1)

工作正常。它返回$arg数组的第一个元素,该数组是键为0的数组本身包含一个数组,而不是第一个元素的内容。您只是误解了array_slice的实际工作原理。

array (
  0 => 
  array (
    0 => 'value1',
    1 => 'value2',
    2 => 'valueN',
  ),
)