php實戰之使用遞歸讀取商品無限分類
最近在做一個商城項目時候,需要取出分類表中的數據,分類表中通過一個pid(父類id)關聯各個分類,為了整理讀出的二維數據成一個樹狀的格式,自己在項目中封裝了下面一個方法。
<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>
這裡設定$limit 的應用場景是如果修改這個分類的父分類為它原來的子分類的話,這個分類枝就發生丟失了,所以這時候就應該將可選類裡面剔除它的子類。
以上就介紹了php實戰之使用遞歸讀取商品無限分類,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

《Laravel中take和limit的使用方法詳解》在Laravel中,take和limit是兩個常用的方法,用於在資料庫查詢中限制傳回的記錄數。雖然它們的作用類似,但在具體的使用場景中有一些細微的區別。本文將詳細解析這兩個方法的用法,並提供具體的程式碼範例。一、take方法在Laravel中,take方法用來限制傳回的記錄數,通常結合orderBy法一起

標題:C#中使用Array.Sort函數對陣列進行排序的範例正文:在C#中,陣列是一種常用的資料結構,經常需要對陣列進行排序運算。 C#提供了Array類,其中有Sort方法可以方便地對陣列進行排序。本文將示範如何使用C#中的Array.Sort函數對陣列進行排序,並提供具體的程式碼範例。首先,我們要先了解Array.Sort函數的基本用法。 Array.So

在物件導向程式設計中,繼承允許我們創建繼承現有類別的屬性和方法的新類別。這個強大的概念可以在我們的程式中實現程式碼重複使用、模組化和可擴展性。在深入研究存取父類別屬性之前,讓我們先了解一下

在進行PHP編程時,我們常常需要將數組合併。 PHP提供了array_merge()函數來完成數組合併的工作,但是當數組中存在相同的鍵時,函數會覆寫原來的值。為了解決這個問題,PHP在語言中還提供了一個array_merge_recursive()函數,該函數可以合併數組並保留相同鍵的值,使得程式的設計變得更加靈活。 array_merge

在PHP中,有許多強大的陣列函數可以讓陣列的操作更加方便和快速。當我們需要將兩個陣列拼成一個關聯數組時,可以使用PHP的array_combine函數來實現這一操作。這個函數其實是用來將一個陣列的鍵當作另一個陣列的值,合併成一個新的關聯數組。接下來,我們將會講解如何使用PHP中的array_combine函數將兩個陣列拼成關聯數組。了解array_comb

Laravel中take和limit是兩種常用的方法,用來限制查詢結果集的數量。雖然它們在功能上有一定的相似之處,但在使用方式和一些細節上有所不同。本文將對這兩種方法的功能及用法進行詳細對比,同時提供具體的程式碼範例,幫助讀者更好地理解它們之間的差異和如何正確地應用。 1.take方法take方法是LaravelEloquent查詢建構器中

在Laravel中,我們常常用到一些方法來限制查詢結果的數量,其中包含take和limit兩個方法。雖然它們都可以用來限制查詢結果的數量,但它們之間確實有一些細微的差異。在本文中,我們將深入探討take和limit在Laravel的不同之處,並透過具體的程式碼範例來加以說明。首先,讓我們來看看take方法。 take方法是Eloquent的一部分,通常用於

Java8中引入了StreamAPI,它能夠大幅簡化對集合的操作。 Stream類別提供了許多用於操作流程的函數式方法,包括過濾、映射、合併等等。其中,limit和skip是用於流操作中限制元素數量的兩個函數。一、limit函數limit函數用來限制流中元素的數量,它接受一個long類型的參數n,表示限制的數量。呼叫limit函數後,傳回一個新的流,它只包含
