我有一个变量,它是一个递归函数的参数,它的值在代码中没有警告地改变。我在$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
跑
我粗略地提出了我不理解的部分。