Togol tunjukkan/sembunyikan imej beberapa kali dalam PHP menggunakan gelung
P粉567281015
P粉567281015 2023-09-13 15:06:29
0
1
605

Saya mempunyai pengguna di laman web saya, pengguna memilih kumpulan mereka 1/2/3 daripada profil mereka. Berdasarkan pemilihan mereka, mereka dibahagikan kepada 3 tatasusunan:

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

Data sampel:

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

Ini bermakna pengguna A kumpulan terpilih 1 dan kumpulan 3. Begitu juga, Pengguna B memilih kumpulan 1, 2, dan 3.

Sekarang, saya sedang mencipta imej dan memilih kumpulan 1/2/3 semasa mencipta imej. Jadi berdasarkan pemilihan kumpulan pengguna saya ingin menunjukkan/menyembunyikan gambar:

Contoh: Jika saya mencipta imej untuk Kumpulan 1 dan Kumpulan 2, hanya pengguna yang telah memilih kumpulan ini boleh melihat imej tersebut. Dan jika pengguna memilih kumpulan 1 dan kumpulan 2, mereka hanya boleh melihat satu gambar. Tiada pertindihan.

Saya mengikut logik berikut:

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

Logik ini tidak berfungsi sepenuhnya. Apabila mencipta gambar untuk semua 3 kumpulan, pengguna hanya memilih kumpulan 2 atau kumpulan 3 dan gambar tidak dipaparkan. Logik ini meninggalkan gelung sebaik sahaja ia menemui kumpulan yang sepadan. Sebarang bantuan tentang cara membetulkannya?

PS: Ini adalah contoh kod. Sila abaikan ralat penghuraian/sintaks

P粉567281015
P粉567281015

membalas semua(1)
P粉178894235

Nampaknya anda mengalami kekeliruan antara kumpulan_gambar dan penerima_kumpulan dan anda menggunakan $g bukannya pengguna

<?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";
}

?>

Ini adalah satu cara. Terdapat banyak variasi. Ini menetapkan $match kepada false atau kumpulan yang dipadankan.

  1. Jangan gunakan 0 sebagai kumpulan (ia bersamaan dengan palsu)
  2. Ampersan ini adalah penunjuk, jadi kandungan tatasusunan tidak akan disalin. Saya mengandaikan tatasusunan ini boleh menjadi agak besar.
  3. Dalam amalan anda akan meletakkannya dalam fungsi
  4. Saya mengembangkannya untuk menjelaskan setiap langkah.
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan