Php 如何使用逗号分隔的ID修复多个下拉列表?

Php 如何使用逗号分隔的ID修复多个下拉列表?,php,arrays,multidimensional-array,drop-down-menu,Php,Arrays,Multidimensional Array,Drop Down Menu,我有两个下拉列表,一个是用户列表,另一个是选中的用户列表。我只想列出未选中的用户 我的数组 $this->getusers= [1] => Array ( [adminID] => 28 [UserName] => a [Password] => 345bcc5369bb7408dcfce4a1a97a936cc961499ec696c5161d3d3ffb99e2f179

我有两个下拉列表,一个是用户列表,另一个是选中的用户列表。我只想列出未选中的用户 我的数组

$this->getusers=
 [1] => Array
        (
            [adminID] => 28
            [UserName] => a
            [Password] => 345bcc5369bb7408dcfce4a1a97a936cc961499ec696c5161d3d3ffb99e2f179
            [salt] => a147b357bd7f351644e784506d87f110
            [email] => ar@mjsofttech.com
            [profile_id] => 2
            [E_id] => 11
            [R_head] => 27
        )

    [2] => Array
        (
            [adminID] => 27
            [UserName] => d
            [Password] => d2111a96534b5ac543234ebcd759a2691535ecc43be575aadff463cc4dfbc0cd
            [salt] => e9eef7d916e6c9ad5ea64790b8f93a35
            [email] => d@mjsofttech.com
            [profile_id] => 1
            [E_id] => 13
            [R_head] => 26
        )

    [3] => Array
        (
            [adminID] => 34
            [UserName] => f
            [Password] => 955cd016646459cb38bd5ba3454724d529a568f2ce0090a3afbc9d50369ddb65
            [salt] => 0a6989ec15b6454a24722e8832cd0cd9
            [email] => f@mjsofttech.com
            [profile_id] => 2
            [E_id] => 123
            [R_head] => 27
        )

[4] => Array
    (
        [adminID] => 33
        [UserName] => j
        [Password] => f2852fb272e1ff58c0562096e94d3d1d9b72c6ed7c0c90e67787179918e58153
        [salt] => 9a547a397db3f342519c21fb934aeb87
        [email] => j@mjsofttech.com
        [profile_id] => 3
        [E_id] => 12
        [R_head] => 29
    )
我尝试了使用in_数组函数进行多重选择

$this->editproject=
Array
(
    [0] => Array
        (
            [Project_name] => test
            [p_id] => 1
            [gid] => 28,33
        )
这里gid是逗号分隔的, 这里
28,33
是选定的用户,因此我不想在用户列表中列出28和33

<?php foreach ($this->getusers as $users): ?>
    <select name="" id="lstview" class="form-control" size="8" multiple="multiple">
    <option value="<?php echo $users['adminID'] ?>"<?php if(!in_array(  $this->editproject[0]['gid'],$users['adminID'])){ ?>selected="selected"<?php } ?>><?php echo $users['UserName'] ?></option>
    </select>
<?php endforeach ?>


如果希望跳过选定的ID而不显示在下拉列表中,则可以设置一个条件以继续循环并获取下一个值

$selected = $this->editproject[0]['gid'];
foreach ($this->getusers as $users):
if(in_array($users['adminID'], $selected){ continue; }
/** rest of the logic **/
endforeach;

我认为问题是您在foreach中使用了完整的select元素,您应该在foreach之外使用select标记

<select name="" id="lstview" class="form-control" size="8" multiple="multiple">
<?php
foreach ($this->getusers as $users) {
    $selected = array_column($this->editproject, 'gid');
    if (!in_array($users['adminID'], $selected)) {
        echo "<option value='" . $users['adminID'] . "' selected>" . $users['UserName'] . "</option>";
    }
}
?>
</select>

您的选择不应该在foreach中,而应该是选项。您的select具有空名称属性。为什么要尝试此操作?一个小小的解释会更好的事情是他不想列出它们,你的代码仍然会列出它们,但只是不让它们保持“选中状态”。@rahul meshram感谢你的回复..但代码会error@RahulMeshram列出所有…我不想列出它们:-(@traker
!在数组中($users['adminID'],$selected
您的意思是,满足此条件的管理员ID只应出现并将被选中,是吗?@RahulMeshram$selected ID不想列出..例如,28,33圆滑,所以我不希望此ID出现在列表中
in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : bool