PHP List資料集 陣列轉換成樹狀結構Tree

2021-08-31 07:07:59 字數 1513 閱讀 1515

/**

* 資料列表轉換成樹

** @param array $dataarr 資料列表

* @param integer $rootid 根節點id

* @param string $pkname 主鍵

* @param string $pidname 父節點名稱

* @param string $childname 子節點名稱

** @return array 轉換後的樹

*/function

listtotree

($dataarr

,$rootid=0

,$pkname

='cc_id'

,$pidname

='parent_id'

,$childname

='children'

) list 轉換為 tree

foreach

($dataarr

as$key

=>

$data

)else

//多級}}

}return

$tree

;}

主要通過引用指向同一位址的技術手段解決問題。$referlist的每個元素指向$dataarr陣列的元素位址。遍歷時,通過將$rootid下的元素指向$tree,非$rootid下的元素指向父級的$referlist[$pid]$childname元素,遍歷完畢後,鏈結形成整個樹結構。

轉換前:

,,

,,,

轉換後:

,,

,]},

/**

* 採用遞迴將資料列表轉換成樹

** @param array $dataarr 資料列表

* @param integer $rootid 根節點id

* @param string $pkname 主鍵

* @param string $pidname 父節點名稱

* @param string $childname 子節點名稱

** @return array 轉換後的樹

*/function

listtotreerecursive

($dataarr

,$rootid=0

,$pkname

='cc_id'

,$pidname

='parent_id'

,$childname

='children')}

return

$arr

;}

實體陣列轉換成DataTable

public static datatable todatatable listentitys 取出第乙個實體的所有propertie type entitytype entitys 0 gettype propertyinfo entityproperties entitytype.getprop...

vector轉換成陣列

std vector,內部儲存的所有元素,都是占用一片連續的記憶體空間。因此,比較好的做法就是直接取第乙個元素的位址,得到了首位址,之後的做法與陣列也是大同小異了。舉例說明。假設函式func需要以陣列的方式傳遞,函式原型如下 void func double pdataaddress,size t ...

MFC CString 轉換成CHAR陣列

由於結構體中用到聯合體 聯合體需要確定分配記憶體分配大小 或其它因素,需要用char陣列來儲存字串,但是在mfc中一般都是用cstring來存放字條串。關於它們之間的轉換,在vs2008中有時會出現異常情況。在msdn是這樣寫的 cstring orig hello,world convert to...