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


Deleting array elements based on key without using unset

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

$array1 = array(23456,98765);
$array2 = array(12345 => "Andrew", 23456 => "Bobby", 98765 => "Charles");
foreach ($array1 as $key) {
  unset($array2[$key]); 
}

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

如何删除没有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 )

非常琐碎,您正在寻找一个数组diff:

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

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

这是一个映射,所以使用removeKey();

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