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
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.