2014-02-10 61 views
0

如果在php codeigniter中使用array_unique,則它僅返回值。請給出一個指導方針來解決這個問題,我是編程新手。我的代碼在下面。在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

$ rack_list不是單維數組。這是二維數組。 –

+0

如何使用刪除這個多維數組的重複條目 – user3265980

回答

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; 
+0

它沒有生成值 – user3265980

+0

對不起,我的錯誤。請檢查我的更新回答:-) –

+0

感謝您的迴應先生,但它不會生成值 – user3265980

1

array_unique比較元件爲字符串。所有數組都被投射到字符串"Array",因此在array_unique的眼中都是相等的。

嘗試通過SORT_REGULAR作爲第二個參數,這應該比較陣列作爲數組,即。如果它們以相同的順序具有相同的鍵/值對,則返回它們相等的值。您可能首先需要ksort陣列。

+0

我使用SORT_REGULAR,但它不工作 – user3265980

+0

你試過'ksort' –

+0

是的,我使用它。但它不起作用顯示所有值 – user3265980