Heim >Backend-Entwicklung >PHP-Tutorial >Praktische PHP-Nutzung der Rekursion zum Lesen unbegrenzter Produktkategorien
Als ich kürzlich an einem Einkaufszentrum-Projekt arbeitete, musste ich die Daten in der Klassifizierungstabelle herausnehmen. Die Klassifizierungstabelle wurde jeder Kategorie über eine PID (Elternklassen-ID) zugeordnet, um sie zu organisieren Um zweidimensionale Daten in ein Baumformat einzulesen, habe ich die folgende Methode in das Projekt eingekapselt.
<code><span>/** * [treeCats description] *<span> @param</span> [array] $arr [原始未排序的数组] *<span> @param</span> [array] $limit [第一个元素代表开始递归的parent_id,默认为0,第二个元素代表剔除元素及子元素cat_id,如果没有传值,默认为0] *<span> @param</span> integer $level [函数调用的深度] *<span> @return</span> [array] [排好序的数组] */</span><span>public</span><span><span>function</span><span>treeCats</span><span>(<span>$arr</span>,<span>$limit</span>,<span>$level</span>=<span>0</span>)</span>{</span><span>$rec</span> = <span>array</span>(); <span>//先消除cat_id对应的值</span><span>foreach</span> (<span>$arr</span><span>as</span><span>$key</span>=><span>$value</span>){ <span>if</span>(<span>$value</span>[<span>'cat_id'</span>]!=<span>$limit</span>[<span>'cd'</span>]){ <span>$arr_new</span> [<span>$key</span>]=<span>$value</span>; } } <span>//对于新数组进行遍历</span><span>foreach</span> (<span>$arr_new</span><span>as</span><span>$key</span> => <span>$value</span>) { <span>if</span>(<span>$value</span>[<span>'parent_id'</span>]==<span>$limit</span>[<span>"pd"</span>] &&<span>$value</span>[<span>'parent_id'</span>]!=<span>$limit</span>[<span>"cd"</span>]){ <span>$value</span>[<span>'level'</span>]=<span>$level</span>; <span>$rec</span> []= <span>$value</span>; <span>//生成用于下一层循环的数组</span><span>$next_limit</span> = <span>array</span>(<span>"pd"</span>=><span>$value</span>[<span>'cat_id'</span>],<span>"cd"</span>=><span>$limit</span>[<span>"cd"</span>]); <span>$rec</span> = array_merge(<span>$rec</span>,<span>$this</span>->treeCats(<span>$arr</span>,<span>$next_limit</span>,<span>$level</span>+<span>1</span>)); } } <span>return</span><span>$rec</span>; } </code>
Das Anwendungsszenario für die Festlegung von $limit besteht darin, dass der Zweig verloren geht, wenn die übergeordnete Kategorie dieser Kategorie in ihre ursprüngliche Unterkategorie geändert wird. Daher sollte die optionale Kategorie zu diesem Zeitpunkt Eliminieren lauten seine Unterklassen.
Das Obige hat die praktische Verwendung von PHP zum rekursiven Lesen unbegrenzter Produktkategorien vorgestellt, einschließlich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die an PHP-Tutorials interessiert sind.