|  | Posted by Robert Cummings on 09/21/05 02:35 
On Tue, 2005-09-20 at 19:20, adriano ghezzi wrote:> hy guys this night I'm quite tired
 >
 > I need a little tip
 >
 >  ok var n could be from 0 to 12
 >
 > var f must be set
 > f=1 if    0<n<=4
 > f=2 if   5<n<=7
 > f=3 if  8<n<=12
 > f=4 if n>12
 >
 > due to my fatigue I coded four if-if else statement,
 >
 > in other languages it is possible use conditional epression in switch case
 > like
 > switch $n
 >
 > case (0<n<=4):
 > ........
 >
 > but no in php
 >
 > any suggestion for more professional coding then 4 if/else statement
 
 For such a small set I'd say that's as good as it gets. However if there
 were 100 intervals you could try the following:
 
 function f( $n )
 {
 $map = array
 (
 //     min,   max,    f
 array(   0,     4,    1 ),
 array(   5,     7,    2 ),
 array(   8,    12,    3 ),
 array(  17,  null,    4 ),
 );
 
 foreach( $map as $criteria )
 {
 if( $criteria[0] === null || $n > $criteria[0]
 &&
 $criteria[1] === null || $n <= $criteria[1] )
 {
 return $criteria[2];
 }
 }
 
 return null;
 }
 
 I think your code is flawed by the way, the lower endpoints are only
 compared for greater than value and not equal to value meaning $n with
 value 4 would not match any f value.
 
 Cheers,
 Rob.
 --
 ..------------------------------------------------------------.
 | InterJinn Application Framework - http://www.interjinn.com |
 :------------------------------------------------------------:
 | An application and templating framework for PHP. Boasting  |
 | a powerful, scalable system for accessing system services  |
 | such as forms, properties, sessions, and caches. InterJinn |
 | also provides an extremely flexible architecture for       |
 | creating re-usable components quickly and easily.          |
 `------------------------------------------------------------'
  Navigation: [Reply to this message] |