首頁  >  文章  >  後端開發  >  dedecms專題節點ID不能出現重複問題的範例程式碼

dedecms專題節點ID不能出現重複問題的範例程式碼

黄舟
黄舟原創
2017-03-31 09:45:181339瀏覽

這篇文章主要介紹了dedecms專題節點ID不能出現重複問題的解決方法,需要的朋友可以參考下

dedecms模板下載地址: www.php.cn/xiazai/code/dedecms

在做專題的時候發現個特別鬱悶人的事情,5個節點,任一個節點中出現ID重複均被過濾之後寫入資料庫;為此研究了一番,原來有去重複功能。

最後發現罪魁禍首就是以下程式碼:

if(is_array($ids))
            {
                foreach($ids as $mid)
                {
                    $mid = trim($mid);
                    if($mid=="") continue;
                    if(!isset($arcids[$mid]))
                    {
                        if($okids=="")
                        {
                            $okids .= $mid;
                        }
                        else
                        {
                            $okids .= ",".$mid;
                        }
                        $arcids[$mid] = 1;
                    }
                }
            }

s其中foreach#循環中,有個isset的判斷,就是在此過濾了一些重複ID;
不知道DEDE $arcids這個變數是如何設定的,經過foreach迴圈之後既然會賦予所有節點的ID均入到陣列中。
為此,我的解決方法是這樣的:
首先將$ids這個數組變數進行去重複處理:

$ids = array_unique($ids);

之後將isset改用is_array判斷是否是數組
完整的程式碼如下:

$ids = array_unique($ids);
            if(is_array($ids))
            {
                foreach($ids as $mid)
                {
                    $mid = trim($mid);
                    if($mid=="") continue;
                    if(!is_array($arcids[$mid]))
                    {
                        if($okids=="")
                        {
                            $okids .= $mid;
                        }
                        else
                        {
                            $okids .= ",".$mid;
                        }
                        $arcids[$mid] = 1;
                    }
                }
            }

不知道如此更改是否會有​​其他「副作用」!還望大家多多指教!

以上是dedecms專題節點ID不能出現重複問題的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn