Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从递归函数php获取数据_Php_Recursion - Fatal编程技术网

从递归函数php获取数据

从递归函数php获取数据,php,recursion,Php,Recursion,我有一个递归函数,但它只返回初始数据: $urls[] = 'http://site1.com'; $urls[] = 'http://site2.com'; foreach($urls as $url) { $output = getMainPage($url, $zids, $listing_count, array(), array()); } print_r($output); //Line 1 function getMainPage($url, $zids, $listing_

我有一个递归函数,但它只返回初始数据:

$urls[] = 'http://site1.com';
$urls[] = 'http://site2.com';
foreach($urls as $url) {
   $output = getMainPage($url, $zids, $listing_count, array(), array());
}
print_r($output); //Line 1
function getMainPage($url, $zids, $listing_count, $ids = array(), $names = array()) {
     $dom = new DOMDocument;
     @$dom->loadHTML($html);
     $links = $dom->getElementsByTagName('a');
     $output_html = '';
     foreach ($links as $link){
         print_r($ids); //Line 2
         $ids[] = $this_id;
         $names[] = $this_name;
         $listing_count++;
         if(strpos($href, 'next') !== FALSE) {
             $url = $next_url;
             $o = getMainPage($url, $zids, $listing_count, $ids, $names);
         }
     }
     $output['ids'] = $ids;
     $output['names'] = $names;
     return $output;
}
打印(输出)//第1行仅从foreach$link循环输出初始数据集,但是打印($id)//第2行输出增量ID。因此,输出当然是在循环完成之前返回的

编辑:新代码(除最后一组数据外,结果相同)

您可以尝试以下方法:

$urls[] = 'http://site1.com';
$urls[] = 'http://site2.com';
foreach ($urls as $url) {
    $output = getMainPage($url, $zids, $listing_count, array(), array());
}
print_r($output); //Line 1

function getMainPage($url, $zids, $listing_count, $ids = array(), $names = array(), $o = array()) {
    $dom = new DOMDocument;
    @$dom->loadHTML($html);
    $links = $dom->getElementsByTagName('a');
    $output_html = '';
    foreach ($links as $link) {
        print_r($ids); //Line 2
        $output['ids'][] = $this_id;
        $output['$names'][] = $this_name;
        $listing_count++;
        $output['listing_count'] = $listing_count;
        $o[] = $output;
        if (strpos($href, 'next') !== FALSE) {
            $url = $next_url;
            $o = getMainPage($url, $output['zids'], $output['listing_count'], $output['ids'], $output['names'], $o);
        }
    }

    return $o;
}

我终于成功了:

$urls[] = 'http://site1.com';
$urls[] = 'http://site2.com';
foreach($urls as $url) {
   $output = getMainPage($url, $zids, $listing_count, array(), array());
}
print_r($output); //Line 1
function getMainPage($url, $zids, $listing_count, $ids = array(), $names = array()) {
 $dom = new DOMDocument;
 @$dom->loadHTML($html);
 $links = $dom->getElementsByTagName('a');
 $output_html = '';
 foreach ($links as $link){
     print_r($ids); //Line 2
     $output['ids'][] = $this_id;
     $output['$names'][] = $this_name;
     $listing_count++;
     $output['listing_count'] = $listing_count;
     if(strpos($href, 'next') !== FALSE) {
         $url = $next_url;
         $o = getMainPage($url, $output['zids'], $output['listing_count'], $output['ids'], $output['names']);
         $output['ids'] = array_merge($output['ids'], $o['ids']);
         $output['names'] = array_merge($output['names'], $o['names']);
     }
 }

 return $output;

}

$o=getMainPage($url、$zids、$listing\U count、$ids、$NAME)
这个
$o
从未在其他地方使用过。@BagusTesa我重新编写了它,考虑了你提到的内容,结果仍然相同。请参阅已编辑的代码。这返回到仅返回初始数据集
$urls[] = 'http://site1.com';
$urls[] = 'http://site2.com';
foreach($urls as $url) {
   $output = getMainPage($url, $zids, $listing_count, array(), array());
}
print_r($output); //Line 1
function getMainPage($url, $zids, $listing_count, $ids = array(), $names = array()) {
 $dom = new DOMDocument;
 @$dom->loadHTML($html);
 $links = $dom->getElementsByTagName('a');
 $output_html = '';
 foreach ($links as $link){
     print_r($ids); //Line 2
     $output['ids'][] = $this_id;
     $output['$names'][] = $this_name;
     $listing_count++;
     $output['listing_count'] = $listing_count;
     if(strpos($href, 'next') !== FALSE) {
         $url = $next_url;
         $o = getMainPage($url, $output['zids'], $output['listing_count'], $output['ids'], $output['names']);
         $output['ids'] = array_merge($output['ids'], $o['ids']);
         $output['names'] = array_merge($output['names'], $o['names']);
     }
 }

 return $output;