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]);
}