cuando hace el unset($kkk[$k1]) es porque se cumplio la condicion de $k1 == $k2 por ende $k1 es igual a $k2, entonces si usas unset($kkk[$k2]) es exactamente igual ;)
y con respecto al while es porque no se recorre el while con el each de esa manera, se hace asi:
Probalo y fijate si va