簡體   English   中英

如何使用逗號分隔的ID修復多個下拉菜單?

[英]How to fix multiple dropdown with comma separated ids?

我有兩個下拉菜單,一個是用戶列表,另一個是選擇的用戶列表。我只想列出未選擇的用戶來列出我的數組

$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_array函數的多選

$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 ?>

運氣不好,我沒有得到任何輸出。任何幫助將不勝感激

我認為問題是您將完整的select元素帶入了foreach,您應該將select標記帶到了foreach之外

<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>

您使用的in_array語法錯誤。
我認為您可能需要array_column來獲取所有gid並檢查in_aray

in_array —檢查數組中是否存在值

句法:

in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : bool

如果您希望跳過選定的ID而不顯示在下拉列表中,則可以設置條件以繼續循環並獲取下一個值。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM