在php codeigniter中使用array_unique只返回一个值

时间:2014-02-10 11:13:29

标签: php codeigniter

如果在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();
}

2 个答案:

答案 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;