我认为这里的其他答案误解了你的问题。
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
,则可以array_merge
通过使用将数组中的每个元素一次传递给它们来一次合并它们user_call_func_array()
。
值得注意的是,您可能希望使用数组联合运算符 ,+
来合并数组,具体取决于fetchLinks
返回的数据类型。有关该运算符如何工作的讨论,请参见此处,有关它与array_merge
.