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; } }
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; } }
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!