如果我给你:
$array = array(object1, object2, object3, object4);
并说,在位置2处,删除此位置之前的所有元素,以便最终结果为:
$array = array(object3, object4);
我该怎么办?我看着array_shift
和array_splice
来实现我想要的 - 我怎么不确定使用它或如何使用它们来达到预期的效果。
答案 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));