如果在php codeigniter中使用array_unique,则仅返回值。请给出解决问题的指导,我是编程新手。我的代码在下面。
Controllers
function get_rck_detail()
{
$partnumber = $this->input->post('part_number');
$subbrand = $this->input->post('subbrand');
$part = $this->suggest->get_part_code($partnumber);
$rack_list = $this->suggest->get_rack_details($part,$subbrand);
echo '<option>--Location--</option>';
foreach(array_unique($rack_list) as $rack)
{
echo '<option value="'.$rack['rs_loc'].'">'.$rack['rack_name'].'</option>';
}
}
模型
function get_rack_details($part,$subbrand)
{
$this->db->select('*');
$this->db->from('rack_spares');
$this->db->join('rack_name','rack_spares.rs_loc = rack_name.rn_id');
$this->db->where('rs_product_code',$part);
$this->db->where('rs_sub',$subbrand);
$query = $this->db->get();
return $query->result_array();
}
答案 0 :(得分:1)
array_unique
将元素作为字符串进行比较。所有数组都转换为字符串"Array"
,因此在array_unique
的目标中都是相同的。
尝试传递SORT_REGULAR
作为第二个参数,这应该将数组作为数组进行比较,即。如果它们在相同的顺序中具有相同的键/值对,则将它们返回为相等。您可能需要先ksort
数组。
答案 1 :(得分:0)
在你的控制器中,
$this->load->helper('form');
$rack_list = $this->suggest->get_rack_details($part,$subbrand);
$res = array();
foreach($rack_list as $r)
$res[$r["rs_loc"]] = $r["rack_name"]; // removes duplicates as we are assigning for keys
$res[""] = "---Location---";
echo form_dropdown("location",$res); // this will produce <select><option></option>...</select>
在您的视图文件中,删除现有的<select>
作为控制器生成选项,并选择
根据您的期望,只在控制器中运行以下循环,而不是使用form_dropdown
$ret_content = "";
foreach($res as $k => $v)
$ret_content .="<option value='".$k."'>".$v."</option>";
echo $ret_content;