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

Reply via email to