I've never coded a merge array function using a for loop. Usually use two while loops (one for the main part, and one for the longer array "leftovers").
Looking at this, it seems inefficient to have the tip portion inside the main for loop. It would be better having it outside. Keep the loops as small and tight as possible.
Good catch on the else if.