在循环内的数组中添加一个值

时间:2015-07-01 16:16:15

标签: php arrays foreach

当我映射数组中包含的页面上的所有链接时,我想检查每个链接是否插入此数组中,如果没有,则插入它。

我试图使用下面的代码但没有成功,因为" foreach $ arr"不会在新值中传递。

include_once('simple_html_dom/simple_html_dom.php');
$arr = array('http://www.domain.com');

foreach ($arr as $key => &$item) {

$html = file_get_html($item);

// Find category links
foreach($html->find('a[href^=http://www.domain.com/dep/]') as $element) { 
  if (!in_array($element->href, $arr))
    $arr[] = $element->href;
   }

}

print_r($arr);

重要提示:我需要在原始数组中搜索和添加值,而不是复制(foreach)。

1 个答案:

答案 0 :(得分:1)

首先

foreach ($arr as $key => &$item) { $item中,每个$item[]都是 STRING 。 (正如警告告诉你的那样)。所以你不应该在这里使用$arr

下一个陷阱:如果你想在你的$arr[] = $some_var; 数组中添加新项目,symtax​​应该是

$arr

但是你不应该这样做,因为每次你向:address=> 'Address:\nshollinganallur,\nchennai.' 添加项目时,这个数组都会增加,你不会迭代两个元素数组,但是例如3个元素或4个元素。你期待这个吗?

您应该找到新值,将它们放在其他数组中,然后合并两个数组。 或者使用@ splash58解决方案。它甚至更简单。