Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des Rückgabewerts der rekursiven Funktion mit unendlicher Klassifizierung in Ecshop

Detaillierte Erläuterung des Rückgabewerts der rekursiven Funktion mit unendlicher Klassifizierung in Ecshop

伊谢尔伦
伊谢尔伦Original
2017-06-27 09:28:351572Durchsuche

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn