Explication détaillée de la valeur de retour de la fonction récursive de classification infinie dans ecshop

伊谢尔伦
Libérer: 2023-03-11 14:56:01
original
1601 Les gens l'ont consulté

Lors de la classification des produits indexation dans le développement secondaire d'ecshop, l'identifiant de catégorie de niveau supérieur doit être obtenu en fonction de l'identifiant de catégorie. La première réaction a été d'utiliser la récursion pour le transmettre, j'ai donc écrit une fonction récursive comme suit :

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;
    }
}
Copier après la connexion

Un programme de test, pas de valeur de retour ? Après une longue vérification, aucune erreur n’a été trouvée. Il semblait que le circuit dans le cerveau était rompu. Quand j'ai demandé à Shui Shen (un internaute au bon cœur) aujourd'hui, il m'a aidé à y répondre, et la modification est la suivante :

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;
    }
}
Copier après la connexion

La fonction est écrite en interne, et même si elle revient, elle le fera revenir seulement à la position de la fonction interne, donc Il y a une autre couche de fonction principale à l'extérieur, qui doit être renvoyée à nouveau

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal