我有一个 form_multiselect()
来对具有关联标签的项目执行搜索。
我的表格:
<div class="control-group">
<?= form_label('Tags: ', 'tag', $label_attr);?>
<div class="controls">
<?= form_multiselect('tag[]',$tags,'','id="tag-select"');?>
</div>
</div>
然后我使用模型中的 get_tags() 填写表单:
public function get_tags() {
$this->db->select('tag_name');
$this->db->distinct();
$this->db->from('offers_tags');
$query = $this->db->get();
$results = $query->result_array();
$tags_arr= array();
$i = 0;
foreach ($results as $id => $tag_name){
foreach ($tag_name as $name){
$tags_arr[$i] = $name;
++$i;
}
}
return $tags_arr;
}
我循环遍历从查询返回的关联 $results
数组。如果没有,当我只想单击标签名称列表时,表单将填充索引及其关联的数组。
提交后,我获取数据,将该数据传递到更大的查询中以获取稍后的结果,其中包含以下内容:
$tag_arr = $this->input->get('tag');
我遇到的问题是表单获取的只是从表单中选择的任何标签的索引。我需要实际的标签作为通过 get 返回的字符串。 前任: /../../..&标签%5B%5D=8 8 是我选择的标签的索引,而不是我需要该标签。
非常感谢任何帮助,谢谢。
**测试更新:
仍然没有解决方案来获取正确的数据。但我尝试将查询中的 results_array()
传递到 form_multiselect()
中,然后选择一个项目后获得的内容,get 仅提取值“tag_name” 。所以我假设它然后传递查询从中提取的元组的名称,因为它是一个关联数组。
还尝试循环结果以通过循环从 results_array()
传递一个新数组:
foreach ($results as $id => $tag_name){
$tags_arr[$id] = $tag_name;
}
所以仍然希望从表单中获取字符串数据。我可以获得元组的名称和字符串数据的索引。
我无法找到使用array_values()
函数的信息。因此,我尝试了此操作,但没有成功,仍然从多选中获取“提交”返回索引值,并使用以下命令完成了我的 get_tags()
函数:
$tags_final = array_values($tags_arr);
return $tags_final;
仍在寻找答案,请提供帮助或至少解决这个问题,已经过去几周了。
最佳答案
对于遇到同样问题的个人:
对结果查询执行以下 for 循环就成功了!
$query = $this->db->get();
$tags = array();
foreach($query->result() as $row)
{
$tags[$row->tag_id] = $row->tag_name;
}
return $tags;
关于php - 我可以让 form_multiselect() 返回我传入的值而不是索引吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23937351/