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;
}
}
}
不知道如此更改是否会有其他“副作用”!还望大家多多指教!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!