0

我需要根据数组中的值填充下拉列表。这是我的代码。

假设用户的 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。在此仅必须选择 table_group 值 1,2 和 4。但是使用我的代码,选择了 1,2,3,4 的值。如果它的 3、4、5 或 2、3、4 等,那么代码就可以正常工作。我该如何解决这个错误?只需要纠正代码。

4

2 回答 2

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]'");
于 2012-11-19T09:29:02.270 回答
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 或执行这些人已经为您编写的操作

于 2012-11-19T05:24:23.247 回答