简化多重回波
我在选择菜单中有完整的时区列表,如下所示:
<option value="Pacific/Kosrae"> Pacific/Kosrae( +11:00 GMT ) </option>
<option value="Pacific/Kwajalein"> Pacific/Kwajalein( +12:00 GMT ) </option>
<option value="Pacific/Majuro"> Pacific/Majuro( +12:00 GMT ) </option>
<option value="Pacific/Marquesas"> Pacific/Marquesas( -09:30 GMT ) </option>
<option value="Pacific/Midway"> Pacific/Midway( -11:00 GMT ) </option>
该列表永远持续下去。
我想将每个选项更改为以下格式:
if($_SESSION['timezone'] == 'Africa/Abidjan') {
echo '<option selected="selected" value="Africa/Abidjan"> Africa/Abidjan( +00:00 GMT ) </option>';
} else {
echo '<option value="Africa/Abidjan"> Africa/Abidjan( +00:00 GMT ) </option>';
}
How can I use php to避免手动复制粘贴和编辑每个选项?
I have a full list of timezones in a select menu like so:
<option value="Pacific/Kosrae"> Pacific/Kosrae( +11:00 GMT ) </option>
<option value="Pacific/Kwajalein"> Pacific/Kwajalein( +12:00 GMT ) </option>
<option value="Pacific/Majuro"> Pacific/Majuro( +12:00 GMT ) </option>
<option value="Pacific/Marquesas"> Pacific/Marquesas( -09:30 GMT ) </option>
<option value="Pacific/Midway"> Pacific/Midway( -11:00 GMT ) </option>
the list goes on forever.
I want to change each of the options into this format:
if($_SESSION['timezone'] == 'Africa/Abidjan') {
echo '<option selected="selected" value="Africa/Abidjan"> Africa/Abidjan( +00:00 GMT ) </option>';
} else {
echo '<option value="Africa/Abidjan"> Africa/Abidjan( +00:00 GMT ) </option>';
}
How can I use php to avoid having to copy paste and edit each of the options manually??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
将数据存储在某种数据结构中,并使用循环。例如,使用从时区名称到偏移量的映射:
Store the data in some data structure, and use a loop. For example, using a map from timezone name to offset:
好吧,假设您有一个包含上述表单的变量,我们将其称为
$form
,另一个变量包含'Africa/Abidjan'
-$timezone.
还没有实际测试过,但它应该可以工作。
Ok, imagine you have a variable containing the form above, let's call it
$form
and another variable containing i.e.'Africa/Abidjan'
-$timezone.
Haven't actually tested it, but it should work.
您必须仅更改变量
$cur_timezone
。对于$timezones_arr
的每个元素都必须存在$times_arr
的元素。You must change only variable
$cur_timezone
. For every element of$timezones_arr
must exist elemnt of$times_arr
.好吧,你不必使用 DOM,但自从已经有很多其他答案显示了不同的方法,以下是如何使用 DOM 来做到这一点:
上面将创建一个时区标识符列表(尽管没有 GMT 差异。请参阅
DateTimeZone::listAbbreviations
(如果需要)作为两者都会
在返回的列表中使用
selected
属性进行标记。Ok, you don't have to it with DOM, but since there is already plenty of other answers showing different approaches, here is how to do it with DOM:
The above will create a list of timezone identifiers (w\out the GMT diff though. See
DateTimeZone::listAbbreviations
if you need them) as<option>
elements in a<select>
element. Unlike your code in the question, the value used for thevalue
attribute is the numeric offset in the array returned byDateTimeZone::listIdentifiers();
instead of the timezone identifier itself. You can invoke the helper with the timezone identifier or the numeric ID though, e.g.would both markup
with the
selected
attribute in the list returned.