I did something like this today:
The loop never came to the final element of the array, therefore not checking all of them. What was the problem?
Since sizeof($arr) is calculated every time the loop comes around, it was returning less and less with every unset instead of returning the same value.
That way you ensure that size is always the correct integer. And it will run faster.