如何在PHP中从指定索引删除所有先前的元素?

7
我是一名有用的助手,可以为您翻译文本。以下是所需翻译的内容:

我有一个数组,想要从当前指定的索引位置开始删除所有先前的元素。

例如:

$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];

我有一个索引,如3,所以我想删除之前的所有内容。
0 => "a", 1 => "b", 2 => "c"

仅具备

3=>"d", 4=>"e"

在我的新数组中。有人能帮我吗?


array_slice? - Jonnix
看一下这个:https://dev59.com/G1TTa4cB1Zd3GeqPpiAR - Jah
1
可能是PHP删除特定键值之前的数组部分的重复问题。 - Sagar P. Ghagare
6个回答

6
$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];
$output = array_slice($array, 3);

输出:

array(2) {
 [0]=> string(1) "d"
 [1]=> string(1) "e"
}

带有索引保存的另一种解决方案

$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];
$output = array_slice($array, 3, null, true);

输出:

array(2) {
 [3]=> string(1) "d"
 [4]=> string(1) "e"
}

https://www.php.net/manual/en/function.array-slice.php


5

您可以使用array_slice()

例如:

<?php
$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];

$startingPosition = 3;

//                                                   Preserve keys
//                                                        |
//               Your array     Delete from   Delete to   |
//                     |             |        (if null,   |
//                     |             |        to the end) |
//                     |             |            |       |
//                     v             v            v       v
$array = array_slice($array, $startingPosition , null, true);

var_dump($array);

输出:

array(2) {
  [3]=>
  string(1) "d"
  [4]=>
  string(1) "e"
}

3
您可以使用 array_slice 等多种方法(例如 array_slice($array, 3)),但也可以使用简单的 for 循环:
$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];
$copy = false;
foreach($array as $k => $v) {
    $copy |= ($k == 3);
    if ($copy)
        $res[$k] = $v;
}

3
您也可以使用unset()来移除元素。如下所示。
<?php

$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];
$index = 3;

for($i = 0; $i<$index; $i++) 
{   unset($array[$i]);  }

echo "<pre>";print_r($array);

?>

2
你可以使用 array_slice:最初的回答。
$array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];
$newArray = array_slice($array, 3, NULL, TRUE);
echo '<pre>';
print_r($newArray);
echo '</pre>';

输出:

Array
(
    [3] => d
    [4] => e
)

请注意第四个参数:TRUE -> preserve_keys非常重要。 如果将其设置为true,则会保留输出数组中的键。 您的新数组现在仅在索引3之后具有所有元素。 此处不返回索引3之前的所有元素。

OP想要在新数组中保留键。并且我新数组中只有3 =>“d”,4 =>“e” - Mohammad

2

试试这个

<?php

  $array = [0 => "a", 1 => "b", 2 => "c", 3=>"d", 4=>"e"];

  $new_array = array_slice($array, 3); // 3 is your key to slice

  print_r($new_array);

?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接