0

我在 $categories 变量中返回了一个 result_array(),现在我想创建一个下拉菜单。但是如果我直接使用变量,数组的所有元素都会被显示出来。但是我只想显示名称并将其 id 作为值。我该怎么做?

$options = $categories;
echo form_dropdown('category', $options);

我想要类似的东西

<select name="category">
<option value="1"> ABC </option>
..... 
<option value="10"> NNNC </option>
</select>
4

4 回答 4

5

$options 数组中的键不是数据库行的实际 ID。

所以你的 $options 数组看起来像这样:

Array(
'0' => array('id'=>'10', 'value'=>'someval1'),
'1' => array('id'=>'22', 'value'=>'someval2'),
'2' => array('id'=>'36', 'value'=>'someval3'))

要看到这一点,请放在print_r($options);回声呼叫之前。

要制作真正的下拉菜单,您应该制作如下所示的辅助函数:

function my_form_dropdown($name, $result_array){
    $options = array();
    foreach ($result_array as $key => $value){
        $options[$value['id']] = $value['value'];
    }
    return form_dropdown($name, $options);
}
于 2013-01-25T00:49:13.007 回答
1

好吧,因为我将所有返回的行作为 $categories 中的数组

因此 $categories 上的 print_r() 给了我输出

Array
(
    [0] => Array
        (
            [id] => 24
            [name] => First
        )

    [1] => Array
        (
            [id] => 25
            [name] => Second
        )

    [2] => Array
        (
            [id] => 26
            [name] => third
        )

)

但我需要类似下面的代码来使下拉菜单工作

Array
(
    [24] => First
    [25] => Second
    [26] => third
)

所以我确实修改了我的代码,如下所示

$options = array();
                    foreach ($categories as $category) {
                        $options[$category['id']] =  $category['name'];
                    }

                    echo form_dropdown('cat_id', $options);

因此生成的 HTML 如下,这是我想要的标记。

<select name="category">
<option value="24"> First </option>
<option value="25"> Second </option>
<option value="26"> Third </option>
</select>

它确实奏效了。感谢您的回答,但是经过两天的挠头,我终于做到了。当你是初学者时,有时它是如此困难。

于 2013-01-25T15:04:25.303 回答
0

你可以做

$options = array(


    '1' => 'ABC',
    '2' => 'NNC'
);

echo form_dropdown('category', $options);

其中键将是下拉列表的值

于 2013-01-25T00:44:37.383 回答
0
$options = array_combine(
    array_column($categories, 'id'),
    array_column($categories, 'value')
);
echo form_dropdown('category', $options, '', array('class' => 'form-control'));
于 2018-08-24T12:37:23.743 回答