正如你在下面看到的,我正在浏览一个名为$ subLinks的数组,将每个数组作为$ subLink,并将其添加到名为$ linkArray的数组中(如果它还没有)。
然而,在循环的每次迭代中,$ linkArray被清除并从头开始。因此,例如在每个循环结束时,$ linkArray回显一个链接列表,在第二个循环中,链接列表被清除并替换为下一个$ subLink的链接。
我的目标是最终得到一个包含每个$ subLink的大数组 - 没有重复项,
$linkArray = array();
foreach($subLinks as $subLink){
# Validate and clean the links found
$subLink = cleanUrl($url,$subLink);
if(!in_array($subLink,$linkArray)){
$linkArray[2] = $subLink;
}
echo($linkArray[2].'<br />');
flushOutputBuffer();
}
回声的一个例子是:
link1
link2
link3
在下一个循环中,回应:
link1
link2
link3
我想要的是,如果它不重复,添加到数组中,就像这样
link1
link2
link3
link4
link5
这里有任何帮助,
由于
更新:数组似乎在110个元素后重置,并覆盖以前的条目
答案 0 :(得分:2)
您始终将新链接指定给[2]
,并一次又一次地覆盖[2]
的内容,请尝试以下方式:
//...
if(!in_array($subLink, $linkArray)){
$linkArray[] = $subLink;
}
//...
这会将新链接附加到数组的末尾。
答案 1 :(得分:1)
您没有正确添加项目。要填充数组,您需要编写
$linkArray[] = $subLink; // do not specify an index
当然这一切都没有实际意义,因为有一种更好的方法可以达到同样的效果:
$linkArray = array_unique(array_map(
function($item) use($url) { return cleanUrl($url, $item); }, $subLinks
));
答案 2 :(得分:1)
如果要附加到索引,请执行以下操作:
$ yourVar [2] [] = $ valueToAppend
答案 3 :(得分:1)
您希望摆脱重复的条目,首先只需将每个子链接添加到链接数组;然后只需使用下面的函数来摆脱任何重复。这是一个单步过程,也是在阵列中获取唯一数据的最快方法之一。
array_unique()函数从数组中删除重复值。如果两个或多个数组值相同,则将保留第一个外观,另一个将被删除。
语法
Array = array_unique(array)
最后,你将拥有一个包含每个$ subLink的大数组 - 没有重复项。'
那就是那个。希望这有帮助,如果是这样,请告诉我。
<强> PK 强>