[php]運用變數引用實現一維陣列轉多維樹狀陣列
/**
* 運用 變數引用 實現 一維陣列 轉 多維樹狀陣列
* @param $array
* @param array $options = [`id`=>`id`, `pid`=>`pid`, `sub`=>`_sub`, `root`=>0]
* @return array
*/
public static function array2Tree($array, $options = []) {
/** merge Options */
$opt = array_merge([`id`=>`id`, `pid`=>`pid`, `sub`=>`_sub`, `root`=>0], $options);
$tree = [];
if(is_array($array)){
$refer = [];
foreach ($array as $k => $v) {
$refer[$v[$opt[`id`]]] =& $array[$k];
}
foreach ($array as $k => $v) {
$parentId = $v[$opt[`pid`]];
if ($opt[`root`] == $parentId) {
$tree[$v[$opt[`id`]]] =& $array[$k];
}else{
if (isset($refer[$parentId])) {
$parent =& $refer[$parentId];
$parent[$opt[`sub`]][$v[$opt[`id`]]] =& $array[$k];
unset($array[$k]);
}
}
}
unset($refer, $array);
}
return $tree;
}
相關文章
- php 一維陣列變多維PHP陣列
- PHP二維陣列轉一維陣列PHP陣列
- 多維陣列轉一維陣列(降維的多種方式)陣列
- PHP中二維陣列與多維陣列PHP陣列
- 二維樹狀陣列陣列
- PHP一維陣列轉二維陣列正規表示式PHP陣列
- js 一維陣列轉二維陣列JS陣列
- js 二維陣列轉一維陣列JS陣列
- JavaScript 學習筆記 - 多維陣列變為一維陣列JavaScript筆記陣列
- JavaSE 陣列:一維陣列&二維陣列Java陣列
- PHP多個多維陣列操作(一)PHP陣列
- JavaScript二維陣列轉換成一維陣列JavaScript陣列
- php多維陣列去除空元素PHP陣列
- Java 二維陣列轉一維Java陣列
- 多維陣列排序陣列排序
- JavaScript --二維陣列查詢一維陣列JavaScript陣列
- C/C++ 二維陣列的理解(多維陣列)C++陣列
- 【二維樹狀陣列】poj 2155 Matrix陣列
- 二維樹狀陣列-poj2155陣列
- poj 1195 二維樹狀陣列陣列
- hdu 4368 樹狀陣列 離線維護陣列
- 一維陣列陣列
- 簡單介紹Lua一維陣列與多維陣列的使用陣列
- PHP多維陣列KeyValue的使用PHP陣列
- php 二維陣列排序PHP陣列排序
- PHP 陣列轉樹結構/樹結構轉陣列PHP陣列
- 二維陣列和稀疏陣列互轉陣列
- 二維樹狀陣列--poj1195陣列
- 多維陣列拍平一層陣列
- c#簡單實現二維陣列和二維陣列列表List<>的轉置C#陣列
- Java實現普通二維陣列和稀疏陣列的相互轉換Java陣列
- DELPHI也可以實現控制元件陣列,用定義陣列變數實現控制元件陣列 (轉)控制元件陣列變數
- ***PHP陣列排序+php二維陣列排序方法(PHP比較器)PHP陣列排序
- 樹狀陣列陣列
- POJ 1195 Mobile phones(二維樹狀陣列)陣列
- scala語法 -多維陣列陣列
- 多維陣列扁平化陣列
- PHP把MYSQL重複ID二維陣列重組為三維陣列PHPMySql陣列