5

我有两个数组

$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' 
4

5 回答 5

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

之前有它作为 array_unset() 。

于 2012-07-26T17:27:28.443 回答
3

请尝试这个以获得更多性能:

var_dump(array_diff_key($alpha, array_flip($index)));
于 2012-07-26T17:42:54.027 回答
2

另一种方法(以防万一$alpha$index碰巧很大并且您想将其全部保留在php上):

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

IDEOne 示例

于 2012-07-26T17:34:29.503 回答
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" } 
于 2012-07-26T17:32:42.227 回答
0

检查这个:

$array = array('a', 'b','c');
unset($array[0]);
$array = array_values($array); //reindexing
于 2012-07-26T17:28:18.370 回答