2015-02-06 2 views
-1

У меня есть два массива и нужно выполнить итерацию по первому и удалить элементы во втором, имеющие ключи, соответствующие значениям в первом массиве.Удаление элементов массива на основе ключа без использования unset

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

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

Однако, я не могу использовать «снята с охраны», потому что «снята с охраны не может быть использован в совершенно безопасный путь типа». Как я могу это сделать?

+2

Что вы подразумеваете под «unset нельзя использовать в безопасном виде совершенно типа»? Этот вопрос является единственным результатом Google для этой точной цитаты. –

+0

Это предупреждение, которое я получаю на работе, когда я пытаюсь это сделать. Решение ниже. – Andy

ответ

0

Это была карта, поэтому используйте removeKey();

foreach ($array1 as $key) { 
    $array2->removeKey($key); 
} 
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) 
+0

Вы также будете дедуплицировать массив в этом процессе ... может быть, не очень хорошая идея. – deceze

Смежные вопросы