猿问

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()不能按预期工作。我在这里想念什么?


千巷猫影
浏览 131回答 2
2回答

互换的青春

您期望数组中的第一个值。array_slice 返回切片数组。您可以使用 array_shift 来代替数组的第一个值并返回它。print_r(array_shift($arg));输出:array (       0 => 'value1',       1 => 'value2',       2 => 'valueN',     )

哈士奇WWW

它按预期工作。它返回数组的第一个元素$arg,它是键为 0 的数组,它本身包含一个数组,而不是第一个元素的内容。您只是误解了 array_slice 的实际工作方式。array (  0 =>   array (    0 => 'value1',    1 => 'value2',    2 => 'valueN',  ),)
随时随地看视频慕课网APP
我要回答