我想将php数组用于HTML选择列表。在这种情况下,它将是国家/地区列表,但在下拉列表中列出的国家/地区名称旁边,我需要将其作为每个国家/地区简短国家/地区代码的值。
我目前正在使用的php数组如下:
$wcr=array(
'Angola',
'Antigua & Barbuda',
'Armenia',
'Austria',
'Azerbaijan',
.....
);
使用此数组的PHP页面:
<select name="country"><option selected value=""> ---------
<? $p=1;asort($wcr);reset($wcr);
while (list ($p, $val) = each ($wcr)) {
echo '<option value="'.$p.'">'.$val;
} ?>
</select>
该值应该是短国家/地区代码(类似'ES','US','AN',...)而不是我现在拥有的数字作为此表单中的值。如果可能的话,我会在同一个PHP数组中编写那些简短的国家代码。
我该怎么做?
答案 0 :(得分:26)
使用foreach(),这是循环数组的最佳功能
你的数组应该像jakenoble发布的那样
<select name="country">
<option value="">-----------------</option>
<?php
foreach($wcr as $key => $value):
echo '<option value="'.$key.'">'.$value.'</option>'; //close your tags!!
endforeach;
?>
</select>
我还对你的html代码做了一些小调整。默认情况下将选择列表中的第一个选项,因此无需指定它;)
编辑:我再次阅读你的问题后进行了一些修改
答案 1 :(得分:4)
首先制作一个相关的国家代码数组,如下所示:
$countries = array(
'gb' => 'Great Britain',
'us' => 'United States',
...);
然后这样做:
$options = '';
foreach($countries as $code => $name) {
$options .= "<option value=\"$code\">$name</option>\n";
}
$select = "<select name=\"country\">\n$options\n</select>";
答案 2 :(得分:3)
你的意思是这样的:
$wcr=array(
"ANG" = > 'Angola',
"ANB" = > 'Antigua & Barbuda',
"ARM" = > 'Armenia',
"AUS" = > 'Austria',
"AZB" = > 'Azerbaijan'
);
然后在你的while循环中,$p
是你的短代码。
如果使用我的短代码数组作为数组键,改进了Krike循环的版本:
<select name="country">
<option value="">-----------------</option>
<?php
asort($wcr);
reset($wcr);
foreach($wcr as $p => $w):
echo '<option value="'.$p.'">'.$w.'</option>'; //close your tags!!
endforeach;
?>
</select>
答案 3 :(得分:1)
如果你使用jakenoble所示的这种数组,我会使用foreach()。
$wcr=array(
"ANG" = > 'Angola',
"ANB" = > 'Antigua & Barbuda',
"ARM" = > 'Armenia',
"AUS" = > 'Austria',
"AZB" = > 'Azerbaijan'
);
所以Foreach看起来像是:
foreach($wcr as $short_code => $descriptive) {
?>
<option value="<?php echo $short_code; ?>"><?php echo $descriptive; ?></option>
<?php
}