RE: Multiple "if()" statements

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux