Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- function InsertAfter($array, $pos, $value) {
- $returnarray = array();
- $mod = 0;
- for($i = 0; $i < count($array); $i++) {
- $returnarray[$i+$mod] = $array[$i];
- if($i == $pos) {
- $mod = 1;
- $returnarray[$i+$mod] = $value;
- }
- }
- return $returnarray;
- }
- function HierList($dataArray, $idKeyName = "id", $parentKeyName = "parent") {
- $returnArray = array();
- $j = 0;
- foreach ($dataArray as $dataKey => $dataValue) {
- if ($dataValue[$parentKeyName] == 0 || !$dataValue[$parentKeyName]) {
- $returnArray[$j] = $dataValue;
- unset($dataArray[$dataKey]);
- $j++;
- }
- }
- foreach ($dataArray as $dataKey => $dataValue) {
- for ($i = 0; $i < count($returnArray); $i++) {
- if ($dataValue[$parentKeyName] == $returnArray[$i][$idKeyName]) {
- $pos = $i;
- break;
- } else {
- $pos = -1;
- }
- }
- if($pos != -1) {
- $dataValue['depth'] = $returnArray[$pos]['depth'] + 1;
- $returnArray[$pos]['children'] += 1;
- $returnArray = InsertAfter($returnArray, $pos, $dataValue);
- unset($dataArray[$dataKey]);
- } else {
- $returnArray[] = $dataValue;
- }
- }
- $tempReturnArray = array();
- foreach($returnArray as $value) {
- $tempReturnArray[$value[$idKeyName]] = $value;
- }
- return $tempReturnArray;
- }
- $testArray = array(
- 0 => array(
- 'id' => 1,
- 'name' => 'test #1',
- 'parentid' => 0
- ),
- 1 => array(
- 'id' => 2,
- 'name' => 'test #2',
- 'parentid' => 1
- ),
- 2 => array(
- 'id' => 3,
- 'name' => 'test #3',
- 'parentid' => 1
- ),
- 3 => array(
- 'id' => 4,
- 'name' => 'test #4',
- 'parentid' => 2
- ),
- 4 => array(
- 'id' => 5,
- 'name' => 'test #5',
- 'parentid' => 4
- ),
- 5 => array(
- 'id' => 6,
- 'name' => 'test #6',
- 'parentid' => 99
- ),
- 6 => array(
- 'id' => 7,
- 'name' => 'test #7',
- 'parentid' => 76
- ),
- 7 => array(
- 'id' => 8,
- 'name' => 'test #8',
- 'parentid' => 6
- )
- );
- print "<pre>".print_r(HierList($testArray, 'id', 'parentid'), 1)."</pre>";
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement