Ho letto nella documentazione ufficiale che quando unset è chiamato all'interno di una funzione e viene applicato ad una variabile, di questa viene cancellata solo la copia locale anche se la variabile stessa era passata per riferimento. Cioe

Codice PHP:

function a(&$var)
{
    unset(
$var);
}

$a 1;
a($a); 
Al termine dell'esecuzione la variabile $a continua a contenere 1. Ok. Io ho un caso simile, vorrei avere conferma che il criterio è lo stesso:

Codice PHP:

foreach ($array as &$item) if ($condizione) unset($item); 
Alla fine del ciclo sembra che $array contenga ancora l'item cancellato.
Confermate?

Grazie