$link_repository=array();
foreach ($links as $value) {
$link_repository=$crawler->fetchLinks($value);
print_r($link_repository);
echo 'Count:'.count($link_repository);
echo '<br><br>';
}
对于每个链接, fetchLinks 函数返回一个元素数组。我想将每个链接的函数返回的数组添加到一个数组中。我该怎么办呢
感谢
答案 0 :(得分:0)
如果我不得不猜测:
$link_repository = array();
foreach ($links as $value) {
$temp = $crawler->fetchLinks($value); //Add to array
$link_repository = array_merge((array)$link_repository, (array)$temp);
print_r($link_repository);
echo 'Count:'.count($link_repository);
echo '<br><br>';
}
}
答案 1 :(得分:0)
试试这个:
$link_repository[] = $crawler->fetchLinks($value);
答案 2 :(得分:0)
$link_repository=array();
foreach ($links as $value) {
array_push($link_repository,$crawler->fetchLinks($value));
//$link_repository[]=$crawler->fetchLinks($value);
//$link_repository=$crawler->fetchLinks($value); I wouldn't use this
print_r($link_repository);
echo 'Count:'.count($link_repository).'<br><br>';
}
return $link_repository;
我提供了两种在数组中输入数据的方法。我不确定哪个最好。
答案 3 :(得分:0)
我认为这里的其他答案误解了你的问题。
fetchLinks()
返回一个数组作为结果。如果您只是将此结果添加到现有的$link_repository
变量中,那么该变量最终将成为一个多维数组 - 即数组数组。例如,如果第一次调用fetchLinks()
返回array(1,2)
而第二次调用返回array(3,4)
,则会显示一个$link_repository
变量,看起来像array(array(1,2), array(3,4)
。
我认为你实际要求的是一种方法,使得fetchLinks()
的所有调用的结果组合成一维数组。在上面的示例中,您希望$link_repository
的最终结果为array(1,2,3,4)
。
如果这是正确的,那么你想要做的是将数组与array_merge
合并在一起:
$link_repository=array();
foreach ($links as $value) {
$link_repository= array_merge($link_repository, $crawler->fetchLinks($value));
}
我不确定性能权衡,但您可能希望将array_merge
推迟到结束。如果您在fetchLinks
中添加每个$link_repository
数组作为其自己的元素,那么您可以通过使用{{3}将数组中的每个元素一次传递到array_merge
来一次合并它们}。
值得注意的是,您可能希望使用数组联合运算符+
来合并数组,具体取决于fetchLinks
返回的数据类型。有关该运算符的工作原理的讨论,请参阅user_call_func_array()
,并参阅here,了解它与array_merge
的区别。