PHP数组和HTML表单下拉列表

PHP数组和HTML表单下拉列表,php,html,arrays,forms,Php,Html,Arrays,Forms,我有一个名为$categories的简单PHP数组,如下所示: Array ( [Closed] => P1000 [Open] => P1001 [Pending] => P1002 [In Progress] => P1003 [Requires Approval] => P1004 ) 我有一个简单的HTML表单,其中一个字段有一个下拉列表,我希望使用数组作为选项,但是我只希望它在下拉列表中显示文本(例如关闭、打开、挂起、正在进行和需要批准)作为选项,但存储

我有一个名为$categories的简单PHP数组,如下所示:

Array
(
[Closed] => P1000
[Open] => P1001
[Pending] => P1002
[In Progress] => P1003
[Requires Approval] => P1004
)
我有一个简单的HTML表单,其中一个字段有一个下拉列表,我希望使用数组作为选项,但是我只希望它在下拉列表中显示文本(例如关闭、打开、挂起、正在进行和需要批准)作为选项,但存储该选项的相关键(例如P1000、P1001等)然后在提交表单时将其作为POST值发送

到目前为止,表单字段的HTML为:

<select name="category_id">
<option value=""></option>
<?php foreach($categories as $category) {$category = htmlspecialchars($category);?>
<option value="<?php echo $category; ?>"><?php echo $category; ?></option>
<?php
}
?>
</select>


因为您必须包含键和值,这两个键都是为了显示POST的文本和值

<?php foreach($categories as $key => $category) {
   $category = htmlspecialchars($category);?>
   <option value="<?php echo $category; ?>"><?php echo $key; ?></option>
<?php
}
?>


您尚未在foreach循环中包括键

foreach($categories as $id=>$category){
    $category = htmlspecialchars($category);
    echo "<option value="{$id}">{$category}</option>";
}
foreach($id=>$category的类别){
$category=htmlspecialchars($category);
回显“{$category}”;
}

您忘记了$value标签。您粘贴了两次类别名称,而不是值。你应该这样做:

<select name="category_id">
<option value=""></option>
<?php 
    #                             !vCHANGEv!
    foreach($categories as $category => $value) 
    {
       $category = htmlspecialchars($category); 
       echo '<option value="'. $value .'">'. $category .'</option>';
    }
?>
</select>

就是您要找的。


<select name="category_id">
<option value=""></option>
<?php
$keys = array_keys($categories);
for($i=0; $i<count($categories); $i++)
{?>
    <option value="<?php echo $keys[$i]; ?>"><?php echo $categories[$i]; ?></option>
<?php
}
?>
</select>

感谢Robik和其他指出同样问题的人,他们没有得到数组中每个值的键。现在一切都很好。非常感谢大家。
<select name="category_id">
<option value=""></option>
<?php
$keys = array_keys($categories);
for($i=0; $i<count($categories); $i++)
{?>
    <option value="<?php echo $keys[$i]; ?>"><?php echo $categories[$i]; ?></option>
<?php
}
?>
</select>