0

嘿伙计们,我有以下代码

$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函数返回一个元素数组。我想将每个链接的函数返回的数组添加到一个数组中。我该怎么做

谢谢

4

4 回答 4

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>';
  }
}
于 2013-01-20T15:22:41.517 回答
0

试试这个:

$link_repository[] = $crawler->fetchLinks($value);
于 2013-01-20T15:22:44.570 回答
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;

我提供了两种将数据输入数组的方法。我不确定哪个是最好的。

于 2013-01-20T15:24:11.777 回答
0

我认为这里的其他答案误解了你的问题。

fetchLinks()返回一个数组作为其结果。如果您只是将此结果添加到现有$link_repository变量中,那么该变量将最终成为一个多维数组 - 即一个数组数组。例如,如果第一次调用fetchLinks()返回array(1,2),第二次调用返回array(3,4),这会给你一个$link_repository看起来像 的变量array(array(1,2), array(3,4)

我认为您实际上要求的是一种方法,以便将所有调用的结果fetchLinks()组合成一个一维数组。在上面的示例中,您希望 的最终结果$link_repositoryarray(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.

于 2013-01-20T18:38:17.087 回答