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