Ciao,
gli array, anche numerici, in PHP sono tutti associativi, quindi l'unset di un elemento non comporta la reindicizzazione

Soluzione

$x = array('a','b','c','d') ;

unset($x[2]) ; //elimina c

$x = array_values($x) ; //reindicizza