Нельзя использовать foreach, потому что это всего лишь копия коллекции.Вам нужно было бы использовать для или захватить ключи отдельно и отделить вашу обработку от массива, которым вы хотите манипулировать.Что-то вроде:
foreach (array_keys($array) as $keyName){
if (strncmp($keyName,'prefix_',7) === 0){
unset($array[$keyName]);
}
}
Вы также уже перебираете коллекцию, получая каждый ключ.Если у вас не было:
$array = array(
'foo' => 1,
'prefix_foo' => 1
);
(где у каждого ключа также есть соответствующий ключ с префиксом "перед ним"), вы столкнетесь с проблемами.