本帖最后由 逆风天 于 2022-3-5 12:53 编辑
需求:
插件中需要设置多个版块,然后前台再根据当前版块的fid对比设置的版块,判断当前版块是否是设置过的版块。
实现:
插件后台设置select多选模式,如下图
当设置好这个功能之后,多选,或者单选,都会自动序列化选中的数据,然后存入数据表。
而数据,看起来是这样
- a:4:{i:0;s:1:"2";i:1;s:2:"36";i:2;s:2:"37";i:3;s:2:"39";}
复制代码问题:
当这条数据从数据库取出来再反序列化,就不会成功。
普通的反序列化
- $SetForums = unserialize($setting['q_and_a']);
复制代码解决:
由于序列化数据存储引号,分号,culry括号,mysql需要自己保存,所以它会自动放入来自gpc_magic_quotes。因此,如果存储序列化数据并且想要使用它,则应在界面中使用html_entity_decode()以确保您具有PHP读取的实际格式。
看起来象这样
- $SetForums = unserialize(html_entity_decode($setting['q_and_a']));
复制代码答案:
对比当前fid是否存在于设置的版块们中
- 1.php中判断
- if (in_array($_GET['fid'], $SetForums)) {
- echo "当前版块在后台中已经设置了!";
- } else {
- echo "未设置!";
- }
- 2.模板中判断
- {if (in_array($_GET['fid'], $SetForums))}
- 当前版块在后台中已经设置了!
- {else}
- 未设置!
- {/if}
复制代码Have Fun!