/**
* 資料列表轉換成樹
** @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...