当我映射数组中包含的页面上的所有链接时,我想检查每个链接是否插入此数组中,如果没有,则插入它。
我试图使用下面的代码但没有成功,因为" 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)。
答案 0 :(得分:1)
首先
在foreach ($arr as $key => &$item) {
$item
中,每个$item[]
都是 STRING 。 (正如警告告诉你的那样)。所以你不应该在这里使用$arr
。
下一个陷阱:如果你想在你的$arr[] = $some_var;
数组中添加新项目,symtax应该是
$arr
但是你不应该这样做,因为每次你向:address=> 'Address:\nshollinganallur,\nchennai.'
添加项目时,这个数组都会增加,你不会迭代两个元素数组,但是例如3个元素或4个元素。你期待这个吗?
您应该找到新值,将它们放在其他数组中,然后合并两个数组。 或者使用@ splash58解决方案。它甚至更简单。