for循环中的变量内部递归函数更改

时间:2014-10-17 14:56:32

标签: php recursion

我有一个变量,它是一个递归函数的参数,它的值在代码中没有警告地改变。我在$idParent之前和之后回复for,价值不同。

public function sortCategoriesByLevel($categories, $levelMax, $idParent, $currentLevel = 0) {
    $sortedCategories = array();
    $categoriesFiltered = array();

    //here is what i don't understand : 
    echo ' idparent sent to fonction : '.$idParent; //output the id
    for($i = 0; $i < count($categories); $i++) {
        echo '<br /> idParent in "for" : ';
        var_dump($idParent); //output -1 no matter what!!!!

        echo '<br /> isset idparent : ';
        echo isset($idParent);

        $level = $categories[$i]->level;
        echo '<br /> RUN <br />';

        if($level == $currentLevel) {
            echo '<br /> TRAITEMENT <br />';
            $id = $categories[$i]->id;
            echo 'idparent before condition : '.$idParent.' id : '.$id;

            if($idParent == $id || $idParent == -1) {
                $sortedCategories[$currentLevel][$categories[$i]->id][0] = $categories[$i];
                echo '<br /> ENREGISTREMENT <br />';
            } else {
                echo '<br /> SAUVEGARDE <br />';
                $categoriesFiltered[] = $categories[$i];
            }


            /*echo '<br />';
            var_dump($categoriesFiltered);
            echo '<br />';*/

            if($currentLevel < $levelMax) {
                echo '<br /> APPEL <br />';
                $currentLevel++;
                $sortedCategories[$currentLevel][$categories[$i]->id][1][] = $this->sortCategoriesByLevel($categoriesFiltered, $levelMax, $id, $currentLevel);
            }
        }
    }
    return $sortedCategories;
}

结果是:

idparent发送给fonction:-1
“for”中的idParent:int(-1)
isset idparent:1

TRAITEMENT
条件之前的idparent:-1 id:18
ENREGISTREMENT

APPEL
idparent发送到fonction:18
“for”中的 idParent:int(-1)
isset idparent:1

我粗略地提出了我不理解的部分。

0 个答案:

没有答案
相关问题