At 4:26 PM +0100 6/30/06, Ford, Mike wrote: >On 30 June 2006 13:37, tedd wrote: > >> At 11:07 PM -0600 6/29/06, John Meyer wrote: >> > Larry Garfield wrote: >> > > >> > >[1] switch is fine if your elseif comparisons are equality > > based. If they're not equality based, then they don't map to >> switch as well. >> > > > > [2] In other words, if you look at a logical ladder as the roots > > of the tree, as long as each root has the same number of >> forks (say each fork ends only one way), your fine with a >> switch. If you have one, however, that has only one >> condition, and another that has two, then you need an >> if...elseif logic tree. >> >> Interesting -- can you give me an example? > >How about this -- a paraphrase of which occurs in many of my scripts: > > if (isset($_POST['id'])): > $id = $_POST['id']; > // etc. -- other initializations based on $id > elseif ($_POST['action']=='add'): > $id = generate_id(); > // initialize stuff to empty values > elseif (potential_other_test_to_detect_other_valid_states()): > // other stuff > else: > KaBlooie(); > endif; > >Of course, that *could* still be implemented using the switch(TRUE) technique (and I've used that elsewhere), but in a case like this instance I prefer the if/elseif construct. I think the point here is that you said [1] and [2], but you still haven't provided an example. The following works just as well as your elseif example. switch (TRUE) { case isset($_POST['id']: $id = $_POST['id']; break; case $_POST['action']=='add': $id = generate_id(); break; case (potential_other_test_to_detect_other_valid_states()): break; default KaBlooie(); break; } Additionally, in my timed tests, I find both control structures to be generally equal in speed -- so I don't find any support for elsif being better matched than switch in any equality based computations. So, I believe the choice to use one control structure in preference to the other is purely a personal one -- and one that has no support stemming from any performance differences, because there are none. Thanks for your reply. tedd -- ------------------------------------------------------------------------------------ http://sperling.com http://ancientstones.com http://earthstones.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php