找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1372|回复: 0

[分享] DEDE专题节点ID不能出现重复的解决方法

[复制链接]
发表于 2018-7-22 09:59:02 | 显示全部楼层 |阅读模式 来自 中国–河南–新乡
在做专题的时候发现个特别郁闷人的事情,
5个节点,任意一个节点中出现ID重复均被过滤之后写入数据库;
为此研究了一番,最后发现罪魁祸首就是以下代码:


  1. if(is_array($ids))

  2.                     {

  3.                         foreach($ids as $mid)

  4.                         {

  5.                             $mid = trim($mid);

  6.                             if($mid=="") continue;

  7.                             if(!isset($arcids[$mid]))

  8.                             {

  9.                                 if($okids=="")

  10.                                 {

  11.                                     $okids .= $mid;

  12.                                 }

  13.                                 else

  14.                                 {

  15.                                     $okids .= ",".$mid;

  16.                                 }

  17.                                 $arcids[$mid] = 1;

  18.                             }

  19.                         }

  20.                     }
复制代码


       

       

        其中foreach循环中,有个isset的判断,就是在此过滤了一些重复ID;

        不知道DEDE $arcids这个变量是如何设置的,经过foreach循环之后既然会赋予所有节点的ID均入到数组中。

        为此,我的解决方法是这样的:

        首先将$ids这个数组变量进行去重复处理:

       

  1. $ids = array_unique($ids);
复制代码


       

        之后将isset改用is_array判断是否是数组

        完整的代码如下:

       

       

       
  1. $ids = array_unique($ids);

  2.        

  3.                             if(is_array($ids))

  4.        

  5.                             {

  6.        

  7.                                 foreach($ids as $mid)

  8.        

  9.                                 {

  10.        

  11.                                     $mid = trim($mid);

  12.        

  13.                                     if($mid=="") continue;

  14.        

  15.                                     if(!is_array($arcids[$mid]))

  16.        

  17.                                     {

  18.        

  19.                                         if($okids=="")

  20.        

  21.                                         {

  22.        

  23.                                             $okids .= $mid;

  24.        

  25.                                         }

  26.        

  27.                                         else

  28.        

  29.                                         {

  30.        

  31.                                             $okids .= ",".$mid;

  32.        

  33.                                         }

  34.        

  35.                                         $arcids[$mid] = 1;

  36.        

  37.                                     }

  38.        

  39.                                 }

  40.        

  41.                             }
复制代码

               

                不知道如此更改是否会有其他“副作用”!还望大家多多指教!

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;

如何回报帮助你解决问题的坛友,好办法就是点击帖子下方的评分按钮给对方加【金币】不会扣除自己的积分,做一个热心并受欢迎的人!

▶专业解决各类DiscuzX疑难杂症、discuz版本升级 、网站搬家 和 云服务器销售!▶有偿服务QQ 860855665 更多精品应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 需要先绑定手机号

关闭

站长推荐上一条 /1 下一条

QQ|侵权投诉|广告报价|手机版|小黑屋|西部数码代理|飘仙建站论坛 ( 豫ICP备2022021143号-1 )

GMT+8, 2025-1-31 21:03 , Processed in 0.047233 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表