PHP array_slice()null length导致空数组

时间:2010-12-01 02:26:23

标签: php arrays

我有一个数组,我想使用array_slice删除数组的第一个元素。这是命令:

$myArray = array_slice($myArray, 1);

现在,array_slice有一个第四个参数,当设置为true时,它会保留数组键而不是重置它们。我确实需要将此选项设置为true。

第三个参数是指定结果数组的长度。如果您希望将数组切片到数组的末尾而不是指定长度,则应该保留此参数。

所以我尝试了这个:

$myArray = array_slice($myArray, 1, NULL, true);

这导致一个空数组。我究竟做错了什么?有没有另一种方法来“省略”长度参数而不将其设置为NULL?因为将其设置为NULL似乎完全清空了我的数组。

另外,我的解决方法是:

$myArray = array_slice($myArray, 1, count($myArray)-1, true);

但似乎我不应该这样做......

更新

这似乎是PHP 5.1.6的错误

3 个答案:

答案 0 :(得分:1)

我刚刚测试了这段代码:

$myArray = array(
'test1' => 'test1',
'test2' => 'test2',
'test3' => 'test3',
'test4' => 'test4',
);

var_dump(array_slice($myArray, 1, null, true));

只有显示test2,test3和test4才能正常工作。

这是在5.2.13上运行的。尝试升级PHP(我知道我也应该这样做,但这是一个开发框)。

答案 1 :(得分:0)

试试这个

$myArray = array_slice($myArray, 1, -1, true);

答案 2 :(得分:0)

您是否也可以使用array_shift删除数组的第一个元素?

编辑:似乎你想保留数字键,不用担心。