基于键删除数组元素而不使用unset

时间:2015-02-06 22:10:31

标签: php

我有两个数组,需要遍历第一个并删除第二个中具有与第一个数组中的值匹配的键的元素。

$array1 = array(23456,98765);
$array2 = array(12345 => "Andrew", 23456 => "Bobby", 98765 => "Charles");

foreach ($array1 as $key) {
  unset($array2[$key]); 
}

但是,我无法使用" unset"因为" unset不能以完全类型安全的方式使用"。我能做到这一点的另一种方式是什么?

3 个答案:

答案 0 :(得分:0)

如何在没有unset()的情况下删除数组元素?你只能创建一个像这样的新数组:

$array1 = array(23456,98765);
$array2 = array(12345 => "Andrew", 23456 => "Bobby", 98765 => "Charles");

$result = array_flip(array_diff(array_flip($array2), $array1));
print_r($result);

输出:

Array ( [12345] => Andrew )

答案 1 :(得分:0)

非常简单,你正在寻找一个阵列差异:

$array2 = array_diff_key($array2, array_flip($array1));

请参阅http://php.net/array_diff_key

答案 2 :(得分:0)

这是一张地图,所以请使用removeKey();

foreach ($array1 as $key) {
  $array2->removeKey($key);
}