有人穷途末路,夕阳西下,却是有人的崭新起点,旭日东升。如果没有你,我不爱旅游,再美的风景也比不过你的发梢。
在做专题的时候发现个特别郁闷人的事情, 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;
}
}
}
其中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;
}
}
}
不知道如此更改是否会有其他“副作用”!还望大家多多指教!
本文DEDE专题节点ID不能出现重复的如何解决方法到此结束。能够拥有一份美丽的心境,不是因为我们获得的颇多,而是我们计较的很少;我们深深懂得,多,有时也是一种负担,是另外一种失去;少,并非真正不足,而是一种隐形的有余。很多的时候,我们审时度势,选择了舍弃,学会舍弃并不意味着全然失去,而是一种更宽阔更博大的获得!小编再次感谢大家对我们的支持!