Działa bez problemu. Funkcja unset usuwa element tablicy o indeksie podanym jako zmienna, ale nie reindeksuje tablicy (nie przenumerowuje pozostałych elementów). Jeżeli użyjesz funkcji array_splice to po usunięciu elementu masz reindeksowaną tablicę. Uruchom sobie poniższy kod.
<?php
$tab1 = array (1, 2, 3, 4, 5);
$tab2 = array (6, 7, 8, 9, 10);
$p = 2;
var_dump($tab1);
unset($tab1[$p]);
echo "<br>";
var_dump($tab1);
echo "<br><br>";
var_dump($tab2);
array_splice($tab2, $p, 1);
echo "<br>";
var_dump($tab2);
?>