PHP删除数组中某个键值之前的部分

PHP删除数组中某个键值之前的部分,php,arrays,Php,Arrays,我有一个按一定顺序排列的数组,我只想从第一个索引到给定键的索引,截断数组的一部分 即。。。 如果我有这个数组 $array = array("0" => 'blue', "1" => 'red', "2" => 'green', "3" => 'red', "4"=>"purple"); 我想在看到键“2”(作为字符串)之前切断数组的第一部分。 所以末端数组类似于 “2”=>“绿色” “3”=>“红色” “4”=>“紫色” 谢谢, Ian是的,您必须在php中使用

我有一个按一定顺序排列的数组,我只想从第一个索引到给定键的索引,截断数组的一部分

即。。。 如果我有这个数组

$array = array("0" => 'blue', "1" => 'red', "2" => 'green', "3" => 'red', "4"=>"purple");
我想在看到键“2”(作为字符串)之前切断数组的第一部分。 所以末端数组类似于

“2”=>“绿色”
“3”=>“红色”
“4”=>“紫色”

谢谢,
Ian

是的,您必须在php中使用array_slice()函数来解决您的问题

示例代码如下:

`
$input = array("a", "b", "c", "d", "e");

$output = array_slice($input, 2);      // returns "c", "d", and "e"
$output = array_slice($input, -2, 1);  // returns "d"
$output = array_slice($input, 0, 3);   // returns "a", "b", and "c"

// note the differences in the array keys
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));
`

上面的代码给出了以下输出

数组 ( [0]=>c [1] =>d ) 排列 ( [2] =>c [3] =>d
)

对于您的案例,您可以使用

print_r(array_slice($array, 2, count($array),true));
编辑:用于编辑的问题

$cloneArray = $array;
foreach($array as $key => $value){
  if($key == $givenInex)
     break;

  unset($cloneArray[$key]);
} 

然后使用$cloneArray

值得一提的是,它只有在数组排序时才能正常工作,因为它将offset+length作为参数,而不是开始索引和结束索引。如果不是,则需要先执行
ksort
。这将不会响应purple@meze:我没有检查它的输出,我的意思是在一般情况下使用array_slice,不一定是这个特定的代码。很抱歉没有明确说明,谢谢您的评论。@Gaurav:是的,您是对的,我会将此更改为
count($array)
,但由于您已经将其作为答案发布,所以我将其保留。谢谢你的评论。我真的应该首先写这段代码,而不是我在回答中写的+我刚刚编辑了我的帖子。我应该说得更清楚,它是字符串“2”的索引,而不是数组的第二个索引。谢谢!这是非常有帮助的。。。在我的例子中,我使用
array\u shift($cloneArray)而不是
unset($cloneArray[$key])因为我的数组没有使用键名,我希望索引一直从0开始
$cloneArray = $array;
foreach($array as $key => $value){
  if($key == $givenInex)
     break;

  unset($cloneArray[$key]);
}