wintallo Posted February 13, 2008 Share Posted February 13, 2008 Hey, I'm making a program that need a dropdown menu with timezones in it. So I wrote a function to output the menu, with an optional parameter of certain timezone to have automatically selected. here's my code. function output_timezone_menu($timezone = 0) { echo "<select name=\"timezone\">"; if ( $timezone == -12 ) { echo "<option value=\"-12\">GMT - 12 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-12\">GMT - 12 Hours</option>"; } if ( $timezone == -11 ) { echo "<option value=\"-11\">GMT - 11 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-11\">GMT - 11 Hours</option>"; } if ( $timezone == -10 ) { echo "<option value=\"-10\">GMT - 10 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-10\">GMT - 10 Hours</option>"; } if ( $timezone == -9 ) { echo "<option value=\"-9\">GMT - 9 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-9\">GMT - 9 Hours</option>"; } if ( $timezone == -8 ) { echo "<option value=\"-8\">GMT - 8 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-8\">GMT - 8 Hours</option>"; } if ( $timezone == -7 ) { echo "<option value=\"-7\">GMT - 7 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-7\">GMT - 7 Hours</option>"; } if ( $timezone == -6 ) { echo "<option value=\"-6\">GMT - 6 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-6\">GMT - 6 Hours</option>"; } if ( $timezone == -5 ) { echo "<option value=\"-5\">GMT - 5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-5\">GMT - 5 Hours</option>"; } if ( $timezone == -4 ) { echo "<option value=\"-4\">GMT - 4 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-4\">GMT - 4 Hours</option>"; } if ( $timezone == -3.5 ) { echo "<option value=\"-3.5\">GMT - 3.5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-3.5\">GMT - 3.5 Hours</option>"; } if ( $timezone == -3 ) { echo "<option value=\"-3\">GMT - 3 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-3\">GMT - 3 Hours</option>"; } if ( $timezone == -2 ) { echo "<option value=\"-2\">GMT - 2 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-2\">GMT - 2 Hours</option>"; } if ( $timezone == -1 ) { echo "<option value=\"-1\">GMT - 1 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"-1\">GMT - 1 Hours</option>"; } if ( $timezone == 0 ) { echo "<option value=\"0\">GMT</option>"; } else { echo "<option selected=\"selected\" value=\"0\">GMT</option>"; } if ( $timezone == 1 ) { echo "<option value=\"1\">GMT + 1 Hour</option>"; } else { echo "<option selected=\"selected\" value=\"1\">GMT + 1 Hour</option>"; } if ( $timezone == 2 ) { echo "<option value=\"2\">GMT + 2 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"2\">GMT + 2 Hours</option>"; } if ( $timezone == 3 ) { echo "<option value=\"3\">GMT + 3 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"3\">GMT + 3 Hours</option>"; } if ( $timezone == 3.5 ) { echo "<option value=\"3.5\">GMT + 3.5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"3.5\">GMT + 3.5 Hours</option>"; } if ( $timezone == 4 ) { echo "<option value=\"4\">GMT + 4 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"4\">GMT + 4 Hours</option>"; } if ( $timezone == 4.5 ) { echo "<option value=\"4.5\">GMT + 4.5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"4.5\">GMT + 4.5 Hours</option>"; } if ( $timezone == 5 ) { echo "<option value=\"5\">GMT + 5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"5\">GMT + 5 Hours</option>"; } if ( $timezone == 5.5 ) { echo "<option value=\"5.5\">GMT + 5.5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"5.5\">GMT + 5.5 Hours</option>"; } if ( $timezone == 6 ) { echo "<option value=\"6\">GMT + 6 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"6\">GMT + 6 Hours</option>"; } if ( $timezone == 6.5 ) { echo "<option value=\"6.5\">GMT + 6.5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"6.5\">GMT + 6.5 Hours</option>"; } if ( $timezone == 7 ) { echo "<option value=\"7\">GMT + 7 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"7\">GMT + 7 Hours</option>"; } if ( $timezone == 8 ) { echo "<option value=\"8\">GMT + 8 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"8\">GMT + 8 Hours</option>"; } if ( $timezone == 9 ) { echo "<option value=\"9\">GMT + 9 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"9\">GMT + 9 Hours</option>"; } if ( $timezone == 9.5 ) { echo "<option value=\"9.5\">GMT + 9.5 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"9.5\">GMT + 9.5 Hours</option>"; } if ( $timezone == 10 ) { echo "<option value=\"10\">GMT + 10 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"10\">GMT + 10 Hours</option>"; } if ( $timezone == 11 ) { echo "<option value=\"11\">GMT + 11 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"11\">GMT + 11 Hours</option>"; } if ( $timezone == 12 ) { echo "<option value=\"12\">GMT + 12 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"12\">GMT + 12 Hours</option>"; } if ( $timezone == 13 ) { echo "<option value=\"13\">GMT + 13 Hours</option>"; } else { echo "<option selected=\"selected\" value=\"13\">GMT + 13 Hours</option>"; } echo "</select>"; } Is there a more elegant or faster way to do this? It seems like all of the if statements could really slow down the load time. What I'm asking is there some other condition structure I could use to speed up the process? Thanks! -wintallo Link to comment https://forums.phpfreaks.com/topic/90810-more-efficient-way-than-daisy-chained-if-statements/ Share on other sites More sharing options...
toplay Posted February 13, 2008 Share Posted February 13, 2008 A switch statement can be used, but a better approach is simply to use an array to hold your timezone values. Then simply use "for" or "foreach" to walk through the array and display. Link to comment https://forums.phpfreaks.com/topic/90810-more-efficient-way-than-daisy-chained-if-statements/#findComment-465478 Share on other sites More sharing options...
kenrbnsn Posted February 13, 2008 Share Posted February 13, 2008 Put all the possible timezones in an array and loop through the array: <?php function output_timezone_menu($timezone = 0) { $tzones = array(-12,-11,-10,-9,-8,-7,-6,-5,-4,-3.5,-3,-2,-1,0,1,2,3,3.5,4,4.5,5,5.5,6,6.5,7,8,9,9.5,10,11,12,13); $tmp = array(); $tmp[] = '<select name="timezone">'; foreach ($tzones as $tz) { $sel = ($tz == $timezone)?' selected="selected"':''; $mp = ($tz < 0)?' - ':' + '; $gmt = ($tz != 0)?'GMT' . $mp . abs($tz) . ' Hours':'GMT'; $tmp[] = '<option value="' . $tz . '"' . $sel . '>' . $gmt . '</option>'; } $tmp[] = '</select>'; echo implode("\n",$tmp) . "\n"; } ?> Tested. Works. Ken Link to comment https://forums.phpfreaks.com/topic/90810-more-efficient-way-than-daisy-chained-if-statements/#findComment-465479 Share on other sites More sharing options...
wintallo Posted February 13, 2008 Author Share Posted February 13, 2008 Thanks a lot guys! <solved> Link to comment https://forums.phpfreaks.com/topic/90810-more-efficient-way-than-daisy-chained-if-statements/#findComment-465501 Share on other sites More sharing options...
haku Posted February 13, 2008 Share Posted February 13, 2008 Don't just type <solved>, click the 'solved' button. The whole point is for people to be able to see that the problem has been solved without coming into the thread. Link to comment https://forums.phpfreaks.com/topic/90810-more-efficient-way-than-daisy-chained-if-statements/#findComment-465572 Share on other sites More sharing options...
kenrbnsn Posted February 13, 2008 Share Posted February 13, 2008 The "Solved" button has been MIA since the forum was upgraded a few days ago. Ken Link to comment https://forums.phpfreaks.com/topic/90810-more-efficient-way-than-daisy-chained-if-statements/#findComment-465580 Share on other sites More sharing options...
haku Posted February 13, 2008 Share Posted February 13, 2008 Crappy! My apologies to wintallo. Link to comment https://forums.phpfreaks.com/topic/90810-more-efficient-way-than-daisy-chained-if-statements/#findComment-465582 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.