Foreach循环不附加到数组

时间:2011-12-10 14:45:56

标签: php arrays

正如你在下面看到的,我正在浏览一个名为$ 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个元素后重置,并覆盖以前的条目

4 个答案:

答案 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