在PHP中使用array_splice / array_slice删除特定项

时间:2010-04-12 12:29:43

标签: php arrays

如何在PHP中使用array_splice / array_slice删除特定项目?

例如: 阵列( 'A', 'B', 'C'); 如何删除'b'? 所以数组仍然是: 阵列( '一个', 'C');

由于

6 个答案:

答案 0 :(得分:7)

实际上。我提出了两种方法来做到这一点。这取决于你将如何处理索引问题。

如果要在删除数组中的某些元素后保留索引,则需要取消设置()。

<?php 
   $array = array("Tom","Jack","Rick","Alex"); //the original array

   /*Here, I am gonna delete "Rick" only but remain the indices for the rest */
   unset($array[2]);
   print_r($array);
?>  

输出将是:

Array ( [0] => Tom [1] => Jack [3] => Alex )  //The indices do not change!

但是,如果您需要一个新数组而不保留以前的索引,那么使用array_splice():

<?php 
  $array = array("Tom","Jack","Rick","Alex"); //the original array
  /*Here,we delete "Rick" but change indices at the same time*/
  array_splice($array,2,1);  // use array_splice()

  print_r($array);
?>

这次的输出是:

Array ( [0] => Tom [1] => Jack [2] => Alex ) 

希望,这会有所帮助!

答案 1 :(得分:4)

基本上:就这样做。

manual有很好的例子:

$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input is now array("red", "green")

如果某些内容无效,请在问题中添加更多详细信息。

答案 2 :(得分:4)

  

如何删除“蓝色”?

你走了:

$input = array("red", "green", "blue", "yellow");
array_splice($input, array_search('blue', $input), 1);

答案 3 :(得分:1)

以(id是您要删除的项目)开头:

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

数组拼接:

$a1 = array_slice($input, $id);
print_r($a1);

Array
(
    [0] => c
    [1] => d
    [2] => e
)

数组切片:

array_splice($input, $id-1);
print_r($input);

Array
(
    [0] => a
)

合并拼接和切片将为您提供一个与输入数组相同但没有特定项的数组。

您可能只使用一行来完成此操作,但我会将其作为练习留给读者。

答案 4 :(得分:1)

是否必须array_splice?我认为最合适的方式(可能取决于数组大小,我不知道array_search缩放的程度)是array_search()unset()一起使用:

$array = array('foo', 'bar' => 'baz', 'bla', 5 => 'blubb');

// want to delete 'baz'
if(($key = array_search('baz', $array)) !== FALSE) {
    unset($array[$key]);
}

答案 5 :(得分:0)

使用array_diff

$array = array_diff($array , array('blue'));