Answering my own answer.  I see now how you are extracting the sub array
information.

My mistake.

Jim Lucas
----- Original Message -----
From: "Jim Lucas" <[EMAIL PROTECTED]>
To: "Rasmus Lerdorf" <[EMAIL PROTECTED]>; "Ralph" <[EMAIL PROTECTED]>
Cc: "PHP General Mailing List" <[EMAIL PROTECTED]>
Sent: Monday, June 02, 2003 9:57 AM
Subject: Re: [PHP] Shipping Rates


> is this correct?
>
> wouldn't you want the array to be like this?
>
>         $rates = array('7.45'=>20,
>                        '8.45'=>35,
>                        '9.45'=>55,
>                        '10.45'=>80,
>                        '11.45'=>100,
>                        '13.45'=>150,
>                        '15.55'=>200,
>                        '19.45'=>999999999);
>
> otherwise your foreach would need to be a for loop something like this.
>
>         for($i=0; $i<count($rates); $i++ )) {
>             if( $num > current( key( $rates[$i] ) ) ) continue;
>             else { $price = key( $rates[$i] ); break; }
>         }
>
> Correct me if I am wrong.
>
> Jim Lucas
>
> ----- Original Message -----
> From: "Rasmus Lerdorf" <[EMAIL PROTECTED]>
> To: "Ralph" <[EMAIL PROTECTED]>
> Cc: "PHP General Mailing List" <[EMAIL PROTECTED]>
> Sent: Sunday, June 01, 2003 2:26 AM
> Subject: Re: [PHP] Shipping Rates
>
>
> > Better approach in what sense?  From a performance perspective you are
not
> > going to beat a specific set of if conditions unless there is an
distinct
> > formula you can apply.  I will assume there is no simple mathematical
> > relationship for your full set of data and what you are really looking
for
> > is a way to just feed the pricing structure into your code by some
> > mechanism and then have it just work, so your goal is to make it more
> > maintenable.  To that end, you could stick your pricing table into an
> > array of arrays and simple loop through it.  Something like this:
> >
> >     function find_rate($num) {
> >         $rates = array(array('7.45'=>20),
> >                        array('8.45'=>35),
> >                        array('9.45'=>55),
> >                        array('10.45'=>80),
> >                        array('11.45'=>100),
> >                        array('13.45'=>150),
> >                        array('15.55'=>200),
> >                        array('19.45'=>999999999));
> >
> >         foreach($rates as $i => $vals) {
> >             if($num > current($vals)) continue;
> >             else { $price = key($vals); break; }
> >         }
> >         return $price;
> >     }
> >
> > This should return the correct shipping price for whatever you pass into
> > find_rate().
> >
> > -Rasmus
> >
> > On Sun, 1 Jun 2003, Ralph wrote:
> >
> > > Maybe it's just that it's late, but can't seem to figure this out. I
> > > want to show a shipping price depending on the amount of purchase. I
> > > thought about using a lot of if() statements, but I know this is not
the
> > > best way to go about this.
> > >
> > > Can anybody enlighten me on this one and give me a better approach.
> > >
> > > Here is an example of my shipping rates:
> > >
> > > Less than $20.00 = $7.45
> > > $20.01-$35.00 = $8.45
> > > $35.01- $55.00 = $9.45
> > > $55.01-$80.00 = $10.45
> > > $80.01-$100.00 = $11.45
> > > $100.01-$150.00 = $13.45
> > > $150.01-$200.00 = $15.55
> > > $200.01 or more  = $19.45
> > >
> > > Thanks.
> > >
> > >
> > >
> > >
> > >
> > > --
> > > PHP General Mailing List (http://www.php.net/)
> > > To unsubscribe, visit: http://www.php.net/unsub.php
> > >
> >
> > --
> > PHP General Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php
> >
> >
>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to