我需要根据数组中的值填充下拉列表。 这是我的代码。
假设用户有id 1,2,3。然后必须选择与这些ID对应的table_group并在下拉列表中显示。此外,不应该有任何重复值,如在这种情况下在id 2和3值23重复,在这种情况下,将只采取一个值。这里$ table_id是从USERS TABLE中获取的。
$mod = explode(',',$table_id);
$mod = array('1','2','3')
$res = array();
function addItems($items, $arr) {
foreach ($items as $value) {
if (!in_array($value, $arr)) {
$arr[] = $value;
}
}
return $arr;
}
$res = array();
for ($i = $mod[0]; $i <= end($mod); $i++) {
$query = $this->db->query("SELECT table_group FROM group where table_id = '$i'");
$row = $query->row();
$grp = $row->table_group;
$group = explode(',', $grp);
$res = addItems($group, $res);
}
return $res;
它实际上工作,但这里发生的错误是假设用户选择1,2,4。在此,只能选择1,2和4的table_group值。但是使用我的代码,选择了1,2,3,4的值。如果它的3,4,5或2,3,4等代码工作正常。我该如何解决这个错误? 只需要纠正代码。
答案 0 :(得分:1)
改变,
for ($i = $mod[0]; $i <= end($mod); $i++) {
$query = $this->db->query("SELECT table_group FROM group where table_id = '$i'");
到
for ($i = 0; $i < count($mod); $i++) {
$query = $this->db->query("SELECT module_group FROM module_group where module_id = '$mod[$i]'");
答案 1 :(得分:0)
不能承认其他人所写的内容;
您有2个查询可以放入ID与GROUP的关联数组中:
idVsgroups array
[1] = array(value11, value12, value 13)
[2] = array(value21, value 22, value 23)
[3] = array(value31, value 23)
[4] = array(value 41, value 13)
[5] = array(value 51)
之后,如果选择了1,2和3,请执行以下操作:
foreach ($selected as $key) { $result[] = $selected[$key] }
哪个会把所有东西都放到$ selected中 - 真的很容易?之后尝试使用array_unique或do what this guys already written for you。