首頁  >  問答  >  主體

使用for循環在PHP中多次切換顯示/隱藏影像

我在我的網站上有用戶,用戶從他們的個人資料中選擇他們的群組1/2/3。根據他們的選擇,他們被分成3個陣列:

$group1_recipients[], $group2_recipients[], $group3_recipients[]

範例資料:

$group1_recipients = ["用户A","用户B","用户C"],
$group2_recipients = ["用户D","用户B","用户E"], 
$group3_recipients = ["用户A","用户B","用户E"]

這表示使用者A選擇了群組1和群組3。同樣,用戶B選擇了群組1、2和3。

現在,我正在建立圖片,並在建立圖片時選擇群組1/2/3。所以根據用戶群組的選擇,我想顯示/隱藏一張圖片:

範例:如果我為群組1和群組2建立一張圖片,只有選擇了這些群組的使用者才能看到圖片。而且如果一個使用者選擇了群組1和群組2,他們只能看到一張圖片。沒有重複。

我遵循了以下邏輯:

$groups = ["1", "2", "3"];
    $match = false;
    
    foreach ($groups as $g) {
        if (in_array($g, $groups)) {
            $match = true;
            break;
        }
    }
    
     if(true===$match)
    {
      if($g == "1"){
        $audience = $group1_recipients;           
      }
        else if($g == "2"){
        $audience = $group2_recipients;  
      }
        else if($g == "3"){
        $audience = $group3_recipients; 
      }
    }
    else
    {
      echo "没有匹配的受众类型";
    }

這個邏輯並不完全有效。當為所有3個群組建立圖片時,使用者只選擇了群組2或群組3,圖片不顯示。這個邏輯一旦找到一個匹配的群組就離開了循環。有關如何修復這個問題的任何幫助嗎?

PS:這是一個範例程式碼。請忽略解析/語法錯誤

P粉567281015P粉567281015425 天前575

全部回覆(1)我來回復

  • P粉178894235

    P粉1788942352023-09-14 09:26:30

    看起來你對image_groupgroup_recipients有些混淆,並且你在使用$g而不是user

    <?php
    //这个图片所属的组
    $image_groups = [1, 2, 3];
    
    //每个组的收件人
    $group1_recipients = ["用户A","用户B","用户C"];
    $group2_recipients = ["用户D","用户B","用户E"];
    $group3_recipients = ["用户A","用户B","用户E"];
    
    //所有收件人的数组
    $all_groups = [1=> &$group1_recipients,
                   2=> &$group2_recipients,
                   3=> &$group3_recipients];
    
    //用户ID
    $user = '用户A';
    
    //初始设置为false
    $match = false;
    
    // 遍历每个image_group
    foreach ($image_groups as $group) {
    
       //获取groupn_recipients数组
       $recipients = &$all_groups[$group];
    
       //如果用户在收件人数组中,则将Match设置为Group
       if (in_array ($user, $recipients)) {
           $match = $group;
           break;
       }
    }
    
    
    if ($match) {
      echo "与组 $group 匹配\n";
     }
    else {
      echo '不匹配', "\n";
    }
    
    ?>
    
    

    這是一種方法。有很多變種。這將$match設定為false或匹配的群組。

    1. 不要使用0作為群組(它等同於false)
    2. 這些&符號是指針,所以數組的內容不會被複製。我假設這些數組可能會變得相當大。
    3. 在實踐中,你會將它放在一個函數中
    4. 我將其展開以澄清每個步驟。

    回覆
    0
  • 取消回覆