我在我的網站上有用戶,用戶從他們的個人資料中選擇他們的群組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粉1788942352023-09-14 09:26:30
看起來你對image_group和group_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或匹配的群組。