Basculer afficher/masquer l'image plusieurs fois en PHP en utilisant la boucle for
P粉567281015
P粉567281015 2023-09-13 15:06:29
0
1
603

J'ai des utilisateurs sur mon site, les utilisateurs sélectionnent leur groupe 1/2/3 depuis leur profil. En fonction de leur sélection, ils sont répartis en 3 tableaux :

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

Exemples de données :

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

Cela signifie que l'utilisateur A a sélectionné le groupe 1 et le groupe 3. De même, l'utilisateur B a sélectionné les groupes 1, 2 et 3.

Maintenant, je crée l'image et sélectionne le groupe 1/2/3 lors de la création de l'image. Donc, en fonction de la sélection du groupe d'utilisateurs, je souhaite afficher/masquer une image :

Exemple : Si je crée une image pour le groupe 1 et le groupe 2, seuls les utilisateurs qui ont sélectionné ces groupes peuvent voir l'image. Et si un utilisateur sélectionne le groupe 1 et le groupe 2, il ne peut voir qu'une seule image. Pas de double emploi.

J'ai suivi la logique suivante :

$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 "没有匹配的受众类型";
    }

Cette logique ne fonctionne pas entièrement. Lors de la création d'images pour les 3 groupes, l'utilisateur sélectionne uniquement le groupe 2 ou le groupe 3 et les images ne sont pas affichées. Cette logique quitte la boucle une fois qu'elle trouve un groupe correspondant. Une aide pour résoudre ce problème ?

PS : Ceci est un exemple de code. Veuillez ignorer les erreurs d'analyse/syntaxe

P粉567281015
P粉567281015

répondre à tous(1)
P粉178894235

On dirait que vous avez une certaine confusion entre image_group et group_recipients et que vous utilisez $g au lieu de 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";
}

?>

C'est une façon. Il existe de nombreuses variantes. Cela définit $match sur false ou sur le groupe correspondant.

  1. N'utilisez pas 0 en tant que groupe (c'est l'équivalent de faux)
  2. Ces esperluettes sont des pointeurs, donc le contenu du tableau ne sera pas copié. Je suppose que ces tableaux peuvent devenir assez volumineux.
  3. En pratique, vous le mettriez dans une fonction
  4. Je l'ai développé pour clarifier chaque étape.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal