使用数组作为值下载codeigniter

时间:2013-01-25 00:40:38

标签: php html codeigniter

我在$ 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 个答案:

答案 0 :(得分:5)

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

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

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

要看到这一点,请在echo call之前放置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);
}

答案 1 :(得分: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>

它确实奏效了。谢谢你的答案,但经过两天的努力,我终于做到了。当你是初学者时,有时会很困难。

答案 2 :(得分:0)

你可以做到

$options = array(


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

echo form_dropdown('category', $options);

其中键将是下拉列表的值

答案 3 :(得分:0)

$options = array_combine(
    array_column($categories, 'id'),
    array_column($categories, 'value')
);
echo form_dropdown('category', $options, '', array('class' => 'form-control'));