On Tue, 2009-01-13 at 15:50 +0100, Jochem Maas wrote: > Ashley Sheridan schreef: > > On Mon, 2009-01-12 at 15:15 -0500, Frank Stanovcak wrote: > >> I've googled, and found some confusing answers. > >> I've tried searching the history of the news group, and only found info on > >> switch or elseif seperately. :( > >> > >> Strictly from a performance stand point, not preference or anything else, is > >> there a benefit of one over the other? > >> > >> > >> for($i=0;$i<3;$i++){ > >> switch($i){ > >> case 0: > >> header pg1 code > >> break; > >> case 1: > >> header pg2 code > >> break; > >> case 3: > >> header pg3 code > >> break; > >> }; > >> }; > >> > >> > >> or would that be better served using an if...elseif structure? > >> > >> Frank > >> > >> > >> > > And a switch is a lot neater for dealing with these sorts of things. I > > tend never to use if...elseif's at all, and use switches. Like Rob said, > > you can fall into further cases below, and it's very simple to add more > > at a later date. There is one place where an if...elseif would work and > > a switch could not, and that is where you were performing lots of > > different logic tests on different variables. > > switch (true) { > case ($x === $y): > // something > break; > > case ($a != $b): > // something > break; > > case (myFunc()): > // something > break; > > case ($my->getChild()->hasEatenBeans()): > // something > break; > } > > evil ... but it works. What is your intent if both $x === $y and $a != $b? From the above example only the code for $x === y will execute. This is hideous from a readability point of view since the first case and second case are matches, but only the first will get executed. This is better represented using an if/elseif/else structure to indicate the exclusion of later expressions. Cheers, Rob. -- http://www.interjinn.com Application and Templating Framework for PHP -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php