我在$ 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>
答案 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'));