如何在php中使用foreach循环将数组值显示到select控件中



我在PHP中有一个名为$volume_unit_list的数组,如下所示:

Array
(
    [0] => Array
        (
            [id] => 5
            [unit] => Microsecond
            [created_at] => 1397479783
            [updated_at] => 1397479783
        )
    [1] => Array
        (
            [id] => 7
            [unit] => oz
            [created_at] => 1397548900
            [updated_at] => 1397672502
        )
    [2] => Array
        (
            [id] => 9
            [unit] => ml
            [created_at] => 1397641838
            [updated_at] => 1397672480
        )
    [3] => Array
        (
            [id] => 10
            [unit] => L
            [created_at] => 1397672517
            [updated_at] => 1397672517
        )
    [4] => Array
        (
            [id] => 12
            [unit] => gms
            [created_at] => 1398196412
            [updated_at] => 1398196412
        )
)

我想使用foreach($volume_unit_list as $key=>$value)将上面数组中的所有元素添加到HTML选择控件中,但我无法做到这一点。在建议的选择控件中,默认情况下,所选选项文本应为"选择单位",其值应为"。对于所有其他数组元素,选项文本应该是上面数组中[unit]键的值,选项值应该与上面数组中的[id]键的值有关。有人能在这方面帮我吗。我尝试的不成功代码如下:

<?php
    $rebate_no = $_POST['rebate_no'];
  echo "<tr id='reb$rebate_no'>
  <td><div class='btn-group'><select id='units_$rebate_no' name='units[$rebate_no]' class='form-control'><option value='' selected='selected'>Select Unit</option>foreach($volume_unit_list as $key=>$value){<option value='$value[id]'>$value[unit]</option>}</select></div></td>
  </tr>";
?>

提前谢谢。

您应该使用字符串串联(但使用模板是最好的)

<?php
    $str="<select id='unit' name='units[]' class='form-control'><option value=''>Select Unit</option>";
    foreach($volume_unit_list as $key=>$value) {
       $str .= "<option value='$key[id]'>$key[unit]</option>";
    }
    $str .="</select>";

?>

根据数组,您需要访问数组第二维度的索引,该维度为:

echo "<select id='unit' name='units' class='form-control'>";
echo "<option value="">Select value</option>";
foreach ($volume_unit_list as $key => $value) {
echo "<option value="".$value['id']."">".$value['unit']."</option>";
}
echo "</select>";

在foreach部分中,$value是内部数组,包含索引为"id"、"unit"、e.t.c.的值。

试试这个,有很多语法错误

echo "<select id='unit' name='units[]' class='form-control'>";
foreach($volume_unit_list as $key=>$value) {
    echo "<option value='{$key['id']}'>${key['unit']}</option>";
}
echo "</select>";

以下是更正后的源代码。不知道你为什么需要这个表行和POST和rebate_no,但我想你知道为什么:)

$volume_unit_list = array( /* ... */);
$rebate_no = $_POST['rebate_no'];
// prepare options
$s = '';
foreach($volume_unit_list as $v) {
    $s .= "<option value='{$v['id']}'>{$v['unit']}</option>";
}
// echo out
echo "
<tr id='reb$rebate_no'><td><div class='btn-group'>
    <select id='units_$rebate_no' name='units[$rebate_no]' class='form-control'>
        <option value='' selected='selected'>Select Unit</option>
        $s
    </select>
</div></td></tr>";

最新更新