Oh come on. This has nothing to do with PHP, okay well it does...But it is far more general than PHP. EVERY laguage in which functions exist has this debate between programmers. Sorry to tell you, but with today's computer speed there really is no noticible difference in speed until you hit REALLY big codes, far bigger than any php or java file you would likely be placing on the web.
As for efficency, technically this can be looked at both ways. It is more organized to have a spereate function for everything surely, but efficent, you can argue it, but there is no real answer there.
So truly, a happy medium is best. The computer could care less if you had a 43,000 line cod ein a single function, but for you, the programmer you can't even seriously consider reading or writing something that large. So the best option, is make different functions for what is reasonable, don't make a new function for every loop and statement, but at the same time, make it readable, make it understandable, if there is a logical difference in function from two code segmens, maybe it is better they are in 2 seperate functions.