dedecms專題節(jié)點(diǎn)ID不能出現(xiàn)重復(fù)問題的解決方法
dedecms專題節(jié)點(diǎn)ID不能出現(xiàn)重復(fù)問題的解決方法
這篇文章主要介紹了dedecms專題節(jié)點(diǎn)ID不能出現(xiàn)重復(fù)問題的解決方法,需要的朋友可以參考下
在做專題的時(shí)候發(fā)現(xiàn)個(gè)特別郁悶人的事情,5個(gè)節(jié)點(diǎn),任意一個(gè)節(jié)點(diǎn)中出現(xiàn)ID重復(fù)均被過濾之后寫入數(shù)據(jù)庫(kù);為此研究了一番,原來(lái)有去重復(fù)功能。
最后發(fā)現(xiàn)罪魁禍?zhǔn)拙褪且韵麓a:
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循環(huán)中,有個(gè)isset的判斷,就是在此過濾了一些重復(fù)ID;
不知道DEDE $arcids這個(gè)變量是如何設(shè)置的,經(jīng)過foreach循環(huán)之后既然會(huì)賦予所有節(jié)點(diǎn)的ID均入到數(shù)組中。
為此,我的解決方法是這樣的:
首先將$ids這個(gè)數(shù)組變量進(jìn)行去重復(fù)處理:
$ids = array_unique($ids);
之后將isset改用is_array判斷是否是數(shù)組
完整的代碼如下:
$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;
}
}
}