循环内循环

Ron*_*nen 0 php math loops

我有这项艰巨的任务(至少对我而言).这是抽象的问题,数学我会说.我们假设我有2个输入:

  1. 一个关键字(字符串)
  2. 一个数字(深度级别)

并提交按钮.

此关键字从数据库中返回8个与此字符串类似的其他关键字.对于8个关键字中的每一个,我需要调用相同的函数,这将返回我已经返回的所有这8个字符串中的另外8个类似关键字.这是"级别"号码.我需要在每个返回的字符串中更深入,具体取决于我输入的级别号.

例如:如果级别编号为2,那么我们将调用该函数9次.第一次为原始关键字,每次返回关键字为8次.如果级别编号为3,则该函数将被调用73次.与上一个示例中一样,但是我们已经返回了另外8个关键字.我认为循环内部会有几个循环,但我自己无法弄明白.非常感谢您的建议.

这是我写的主要代码,可能效率不高:

$keywords = preg_split('/$\R?^/m', trim($_POST['keyword']));
$keywords = array_map('trim', $keywords);
$level = $_POST['level'];
if (!$level || $level < 2) {
    echo '<b>Level was either 1 or null</b>';
}
foreach ($keywords as $keyword) {
    $results = getResults($keyword);
    if ($level && $results) {
        for ($i = 0; $i < sizeof($results); $i++) {
            $results1 = getResults($results[$i]);
            for ($j = 0; $j < $level; $j++) {
                $results1 = getResults($results1[$i])
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出应该是这样的:

1->
   2
   ->
      3
      3
      3
      3
      3
      3
      3
      3
   2->
   2->
   2->
   2->
Run Code Online (Sandbox Code Playgroud)

Nap*_*lux 9

您需要了解在代码中使用它的recursion 方式和方式.基本上你需要在自身内部调用相同的函数,n次,其中n是请求的深度级别.

从像Fibonacci系列这样的小例子开始,你会发现实现你的功能的方法.

一切都是基于一个条件($deepness > 0).

根据我的理解,这是一个小建议(伪代码).

function findSimilar($words,$deepness) {
    if($deepness == 0) {
        return similarWordsOf($words);
    } else {
        return similarWordsOf(findSimilar($words,$deepness -1));
    }
}
Run Code Online (Sandbox Code Playgroud)