递归函数不执行代码第二次调用和继续

时间:2013-04-15 06:06:54

标签: php

所以我有一个文档数组,用于将每个字符串添加为数组中的元素,以及具有私有成员函数添加文档的类的实例,这实际上将文档添加到添加文档的新数组中。 函数don()接受3个参数,它需要添加到添加文档数组的字符串,从函数内部添加文档的类的实例,以及要添加的更多内容的数组。

在psuedo代码中,它是这样的:

$contentsAdded = []; //blank array
$contents = ['document one text', 'document two text', 'document three text';
$firstDoc = 'hello I am the first document';

function don($currentString, $instance, $contentArray){
    //addDocument() adds strings to  /         //$contentsAdded
    $instance->addDocument($currentString);
    //Travel through array $contentArray
    //if $contentArray[iterator] is not in     //$contentsAdded, then
    don($contentArray[i], $instance, $contentArray);
}
don($firstDoc, $instance, $contents);

这样做的最佳方式是什么?

特别是当我按照我想的方式做的时候,$ contentsAdded只有$ firstDoc吗?

1 个答案:

答案 0 :(得分:1)

您不需要将第一个文档与另一个文档分开,因为您必须进行通用过程。并且在这种情况下不需要进行递归函数(递归函数可能会占用更多资源,请谨慎使用)。

您应该简单地遍历文档数组,并使用您的实例对象逐个添加它们。

// Initialize the list of document to add
$contents = array('first document',
                  'document one text',
                  'document two text',
                  'document three text');

// Loop over your array of document
foreach($contents as $oneDocument)
    $instance->addDocument($oneDocument);