もう終わってる話題かもしれませんんが、 単純に MAX(配列名)+1 じゃ駄目ですかね。 途中の未使用の値が拾えませんけど。