我有两个数组
$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'
答案 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));
}
答案 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