[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陣列
- 二維樹狀陣列陣列
- js 一維陣列轉二維陣列JS陣列
- js 二維陣列轉一維陣列JS陣列
- PHP 多維陣列排序PHP陣列排序
- 一維多維陣列陣列
- JavaScript 學習筆記 - 多維陣列變為一維陣列JavaScript筆記陣列
- JavaSE 陣列:一維陣列&二維陣列Java陣列
- 多維陣列陣列
- Java 二維陣列轉一維Java陣列
- PHP 陣列轉樹結構/樹結構轉陣列PHP陣列
- 多維陣列排序陣列排序
- C/C++ 二維陣列的理解(多維陣列)C++陣列
- 一維陣列陣列
- 簡單介紹Lua一維陣列與多維陣列的使用陣列
- 二維陣列和稀疏陣列互轉陣列
- php 二維陣列排序PHP陣列排序
- Java實現普通二維陣列和稀疏陣列的相互轉換Java陣列
- 多維陣列拍平一層陣列
- 陣列004 動態建立一維陣列陣列
- 樹狀陣列陣列
- Java break、continue 詳解與陣列深入解析:單維陣列和多維陣列詳細教程Java陣列
- php 迴圈陣列引用傳值改變陣列本身的值PHP陣列
- python多維陣列切片方法Python陣列
- 多維陣列扁平化陣列
- Multik——Kotlin的多維陣列Kotlin陣列
- scala語法 -多維陣列陣列
- php多維陣列去除重複值的方法PHP陣列
- C# 一維陣列如何快速實現陣列元素的資料型別的轉換?C#陣列資料型別
- 將一個多維陣列徹底的降維陣列
- C++容器巢狀實現動態二維陣列C++巢狀陣列
- 資料結構實驗 多維陣列的實現資料結構陣列
- 二維陣列陣列
- Java陣列宣告建立和使用以及多維陣列、Arrays類、稀疏陣列Java陣列
- 解析樹狀陣列陣列
- DJL 之 Java 玩轉多維陣列,就像 NumPy 一樣Java陣列
- 如何將一維陣列轉換成與考慮南天陣列元素?陣列
- PHP xml 轉陣列 陣列轉 xml 操作PHPXML陣列