Lee bien el manual de unset() porque parece que no lo has hecho:
Código PHP:
Ver original$foo = ['x' => 'y'];
// MAL (esto sería equivalente a lo que haces)
$key = 'x';
// BIEN
Otra forma es usar array_filter() para filtrar precisamente el array dada una función propia, etc.