使用PHP从数组中删除项目

时间:2012-07-26 17:25:41

标签: php arrays

我有两个数组

$alpha=array('a','b','c','d','e','f');

$index=array('2','5');

我需要删除第一个数组中具有第二个数组索引的项目。

(删除c-index为2,f-index为5)

这样返回的数组是

{ 'A', 'B', 'd', 'E'}

我如何使用PHP执行此操作? 感谢

修改

实际上我需要最终的数组如下

[0]=>a
[1]=>b
[2]=>d
[3]=>e

取消设置将返回具有相同索引的数组

0 => string 'a' 
2 => string 'c' 
3 => string 'd' 
4 => string 'e' 

5 个答案:

答案 0 :(得分:3)

foreach ($index as $key) {
    unset($alpha[$key]);
}

之前将它作为array_unset()。

答案 1 :(得分:3)

请尝试以获得更高的性能:

var_dump(array_diff_key($alpha, array_flip($index)));

答案 2 :(得分:2)

另一种方法(如果$alpha$index碰巧很大,你想把它全部保存在php上):

function remove_keys($array, $indexes = array()){
  return array_intersect_key($array, array_diff(array_keys($array),$indexes));
}

IDEOne Example

答案 3 :(得分:1)

遍历$index数组中的键,并在迭代过程中使用unset()删除相应的键:

<?php
$alpha=array('a','b','c','d','e','f');  
$index=array('2','5'); 

foreach ($index as $key) {     
    unset($alpha[$key]);
} 

var_dump($alpha);
?>

输出:

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

答案 4 :(得分:0)

检查一下:

$array = array('a', 'b','c');
unset($array[0]);
$array = array_values($array); //reindexing