Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung des Rückgabewerts der rekursiven Funktion mit unendlicher Klassifizierung in Ecshop
Bei der Produktklassifizierung Indexierung in der sekundären Entwicklung von Ecshop muss die Kategorie-ID der obersten Ebene basierend auf der Kategorie-ID ermittelt werden. Die erste Reaktion bestand darin, Rekursion zu verwenden, um es weiterzugeben, also habe ich eine rekursive Funktion wie folgt geschrieben:
function getCatTopId($cat_id) { if ($cat_id) { $res = Array(); $sql = 'SELECT cat_id, parent_id' . ' FROM ' . $GLOBALS['ecs']->table('category') . ' WHERE cat_id = ' . $cat_id . ' AND is_show = 1'; $res = $GLOBALS['db']->getAll($sql); if ($res[0]['parent_id'] > 0) { getCatTopId($res[0]['parent_id']); } else { return $res[0]['cat_id']; } } else { return 1; } }
Ein Testprogramm, kein Rückgabewert? Nach langer Überprüfung wurde kein Fehler gefunden. Es schien, dass der Schaltkreis im Gehirn unterbrochen war. Als ich heute Shui Shen (einen gutherzigen Internetnutzer) fragte, half er mir bei der Beantwortung und die Änderung lautete wie folgt:
function getCatTopId($cat_id) { if ($cat_id) { $res = Array(); $sql = 'SELECT cat_id, parent_id' . ' FROM ' . $GLOBALS['ecs']->table('category') . ' WHERE cat_id = ' . $cat_id . ' AND is_show = 1'; $res = $GLOBALS['db']->getAll($sql); if ($res[0]['parent_id'] > 0) { return getCatTopId($res[0]['parent_id']); // 修改处,多写个 return ,让函数返回值 } else { return $res[0]['cat_id']; } } else { return 1; } }
Die Funktion ist intern geschrieben, und selbst wenn sie zurückkehrt, wird sie zurückgegeben kehren Sie also nur zur Position der internen Funktion zurück Es gibt eine weitere Schicht der Hauptfunktion außerhalb, die erneut zurückgegeben werden muss
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Rückgabewerts der rekursiven Funktion mit unendlicher Klassifizierung in Ecshop. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!