我需要删除数组的前29个值。我搜索过,似乎没有任何内置的PHP函数允许这样做。那怎么办呢?
答案 0 :(得分:4)
array_splice($array, 0, 29);
array_splice
删除数组中的元素并返回已删除的元素。
或者,如果您想保留原始数组,但想要创建一个删除了前29个元素的新数组,请使用array_slice
:
$newArray = array_slice($array, 29);
答案 1 :(得分:2)
您可以使用array_splice
从数组中删除值:
array_splice($arr, 0, 29)
数组作为引用传递,array_splice
修改数组本身。它返回已删除的值的数组。
以下是其工作原理的示例:
$arr = range(1, 30);
$removed = array_splice($arr, 0, 29);
var_dump($arr); // array(1) { [0]=> int(30) }
var_dump($removed); // array(29) { [0]=> int(1) … [28]=> int(29) }
与此相反,array_slice
(没有 p )只是复制数组的一部分而不修改它:
$arr = range(1, 30);
$copied = array_slice($arr, 29);
var_dump($arr); // array(30) { [0]=> int(1) … [29]=> int(30) }
var_dump($copied); // array(1) { [0]=> int(30) }
此处array_slice($arr, 29)
复制从偏移29到结尾的所有内容,同时保留$arr
原样。
但是正如你所说要删除值,array_splice
似乎是更好的选择,而不是复制零件并将复制的零件重新分配给变量,如下所示:
$arr = array_slice($arr, 29);
因为虽然这具有相同的效果(前29个值不再存在),但您执行两次复制操作:创建一个新数组并复制除前29个值之外的所有值,然后将该值重新分配给{{1 (需要再次复制整个数组)。