2011-01-30 101 views
0

我需要删除数组的前29个值。我搜索了,似乎没有任何内置的PHP函数允许这样做。那么这怎么做呢?如何从PHP中的数组中删除值?

+2

除了给出的答案:要删除单个值,使用`unset`:http://php.net/manual/en/function.unset.php – 2011-01-30 10:36:32

回答

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个值以外的所有内容,然后将该值重新分配给$arr(需要再次复制整个阵列) 。

+0

这给我留下了前29个值,我想要删除前29个,剩下的就剩下了。 – Sammy 2011-01-30 10:44:41

+0

@Sammy:如前所述,`array_splice`修改传递的数组,并且只返回已经被删除的值。 – Gumbo 2011-01-30 10:45:50

4
array_splice($array, 0, 29); 

array_splice删除数组中的元素并返回删除的元素。

另外,如果你想保持原来的数组,但希望创建与删除的第一个29个元素的数组,使用array_slice

$newArray = array_slice($array, 29);