PHP数组和选择列表

时间:2010-08-24 11:02:36

标签: php

我想将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数组中编写那些简短的国家代码。

我该怎么做?

4 个答案:

答案 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
}