从数组php

时间:2015-06-10 16:54:40

标签: php arrays

如果我给你:

$array = array(object1, object2, object3, object4);

并说,在位置2处,删除此位置之前的所有元素,以便最终结果为:

$array = array(object3, object4);

我该怎么办?我看着array_shiftarray_splice来实现我想要的 - 我怎么不确定使用它或如何使用它们来达到预期的效果。

3 个答案:

答案 0 :(得分:1)

使用array_slice。有关详情,请查看链接http://php.net/manual/en/function.array-slice.php

$array = array(object1, object2, object3, object4);
$array = array_slice($array,2); // 2 is position

答案 1 :(得分:1)

array_slice是一种解决方法,但是,如果您想在特定的之前删除任何数组中的所有元素,而不进行搜索,那么:

//assuming you've already verified the match is in the array
//make a copy of $array first if you don't want to break the original
while($array[0] !== $match) {
   array_shift(&$array);
}

或者,您可以:

$index = array_search($match, array_values($array));
if($index !== false) $array = array_slice($array, $index);

这完成了验证和切片。请注意,array_values()用于计算关联数组。

答案 2 :(得分:1)

或者如果您正在查看值而不是索引,只需对@ Ashwani的答案进行微调,您就可以:

$array = array('object1', 'object2', 'object3', 'object4');
$slice = array_slice($array, array_search('object3',$array));