Di PHP, setelah unset() pada array numerik, index memang tidak otomatis dirapikan.
Contoh:
$buah = ['anggur','pisang','jambu'];
unset($buah[1]);
var_dump($buah);
Hasilnya jadi:
array(2) {
[0] => "anggur"
[2] => "jambu"
}
Kalau ingin index kembali urut dari 0, gunakan array_values():
$buah = array_values($buah);
Hasil akhirnya:
array(2) {
[0] => "anggur"
[1] => "jambu"
}
Contoh lengkap:
$buah = ['anggur','pisang','jambu'];
unset($buah[1]);
$buah = array_values($buah);
print_r($buah);
Output:
Array
(
[0] => anggur
[1] => jambu
)
array_values() akan mengambil semua value lalu membuat ulang index numeriknya secara berurutan.
Yang penting diingat:
unset()→ menghapus elemen tanpa merapikan indexarray_values()→ merapikan ulang index numerik
Jadi kombinasi yang umum:
unset($array[$i]);
$array = array_values($array);
Tapi hati-hati juga, array_values() cocok kalau memang array numerik biasa.
Kalau associative array seperti:
$user = [
'nama' => 'Sapto',
'umur' => 30
];
maka key aslinya akan hilang:
array_values($user);
// hasil:
[
0 => 'Sapto',
1 => 30
]
Jadi biasanya dipakai khusus untuk array list/index numerik saja.