Schalten Sie das Ein-/Ausblenden von Bildern in PHP mithilfe der for-Schleife mehrmals um
P粉567281015
P粉567281015 2023-09-13 15:06:29
0
1
570

Ich habe Benutzer auf meiner Website, Benutzer wählen ihre Gruppe 1/2/3 aus ihrem Profil aus. Aufgrund ihrer Auswahl werden sie in 3 Arrays unterteilt:

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

Beispieldaten:

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

Das bedeutet, dass Benutzer A Gruppe 1 und Gruppe 3 ausgewählt hat. Ebenso wählte Benutzer B die Gruppen 1, 2 und 3 aus.

Jetzt erstelle ich das Bild und wähle beim Erstellen des Bildes die Gruppe 1/2/3 aus. Basierend auf der Benutzergruppenauswahl möchte ich ein Bild ein-/ausblenden:

Beispiel: Wenn ich ein Bild für Gruppe 1 und Gruppe 2 erstelle, können nur Benutzer, die diese Gruppen ausgewählt haben, das Bild sehen. Und wenn ein Benutzer Gruppe 1 und Gruppe 2 auswählt, kann er nur ein Bild sehen. Keine Duplizierung.

Ich bin der folgenden Logik gefolgt:

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

Diese Logik ist nicht ganz gültig. Beim Erstellen von Bildern für alle 3 Gruppen wählt der Benutzer nur Gruppe 2 oder Gruppe 3 aus und die Bilder werden nicht angezeigt. Diese Logik verlässt die Schleife, sobald sie eine passende Gruppe findet. Gibt es Hilfe, wie man das Problem beheben kann?

PS: Dies ist ein Beispielcode. Bitte ignorieren Sie Parsing-/Syntaxfehler

P粉567281015
P粉567281015

Antworte allen(1)
P粉178894235

看起来你对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. 我将其展开以澄清每个步骤。
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!