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数组_slice()空长度导致空数组_Php_Arrays - Fatal编程技术网

PHP数组_slice()空长度导致空数组

PHP数组_slice()空长度导致空数组,php,arrays,Php,Arrays,我有一个数组,我想使用array_slice删除数组的第一个元素。命令如下: $myArray = array_slice($myArray, 1); 现在,array_slice有第四个参数,当设置为true时,它保留数组键而不是重置它们。我需要将此选项设置为true 第三个参数是指定结果数组的长度。如果希望将数组切片到数组的末尾,而不是指定长度,则应该省略此参数 所以我试了一下: $myArray = array_slice($myArray, 1, NULL, true); 这将导致一

我有一个数组,我想使用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);
但看起来我不该这么做

更新

这似乎是PHP5.1.6的一个bug,试试这个

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

我刚刚测试了这段代码:

$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(我知道我也应该升级,但这是一个开发框)。

你不能用它删除数组的第一个元素吗


编辑:看来你想保留数字键,没关系。

这个问题被否决的具体原因是什么?serverfault的主题似乎很有可能偏离。哦,天哪。。。我真的以为我把这个贴在了网上所以。。。。对于拥有此权限的人,请将此主题移动到SONope,它将删除第一个元素,但会一直分割到数组中第二个到最后一个元素(第-1个元素)。所以在某种意义上,它只将数组的第一个和最后一个元素切掉。我使用的是PHP5.1.6,这是CentOS的标准版本。也许这是一个错误。我将尝试升级。@Jakobud:其中有一些小的后端口修复。请尝试最新的CentOS版本,如果没有,请尝试更高的PHP版本。我在CentOS上编写了一个升级到PHP5.2或5.3的超级简单程序,只需跳过nginx部分: