forの条件式は delfile -> dfileの間違いだとして、、
>>701が言ってるように、書き出されないはずだよ。

他にヤバそうな所といえば、file()は改行コード付きで読み込まれるから、
$inputの最後に改行コードが無いとつじつまが合わない事になるくらいかな。
そのせいで実際のデータファイル内では1行に2レコード入っちゃってるんじゃないかな。
それを別の表示用のスクリプトで見ているから あたかも消えたように見えるとか。