由一維陣列,陣列中至少包含 id和pid兩個字段,來構建乙個樹形結構的陣列,用於構建分類樹。
class classifybuild
/*** 在陣列$arr一維上查詢是否 id 值和$id相同的值
* @param [array] $arr [結果陣列]
* @param [int] $id [要查詢的id值]
* @return [int|null] [如果存在,則返回該值對應的位置$key;否則,返回null]
*/private function search($id)
}return null;
} /**
* 在結果陣列中是否有 id值和$pid相同的值
* @param [array] $arr [結果陣列]
* @param [int] $pid [要查詢的pid值]
* @return [&$arr|&$pid] [如果存在,則返回結果陣列中查詢到的該值的引用;如果不存在,則返回$pid的引用]
*/private function updatearray(&$result, $arrtmp)
elseif (!empty($one['childrens']))
}} return false;
} public function make() elseif (!is_null($key)) else
/*** 將處理過的當前節點 $arrtmp 根據不同的情況更新到結果陣列中
*/if (0!=$arrtmp['pid'])
} else
} }/**
* 將需要插入的資料更新到結果陣列中
* @param [array] $arr [結果陣列]
* @param [array] $pushvalue [需要插入的陣列]
*/private function result_push(&$arr, $pushvalue)
else else
}$before = array_slice($arr, 0, $length);
$after = array_slice($arr, $length, count($arr)-$length);
$arr = array_merge($before, array($pushvalue), $after);
} }public function getresult()
}
$arrsource = array(
array(
'id'=>4,
'pid'=>1,
'sort'=>1
),array(
'id'=>6,
'pid'=>0,
'sort'=>8
),array(
'id'=>3,
'pid'=>1,
'sort'=>2
),array(
'id'=>12,
'pid'=>0,
'sort'=>3
),array(
'id'=>2,
'pid'=>1,
'sort'=>3
),array(
'id'=>13,
'pid'=>2,
'sort'=>2
),array(
'id'=>16,
'pid'=>4,
'sort'=>1
),array(
'id'=>5,
'pid'=>6,
'sort'=>3
),array(
'id'=>18,
'pid'=>2,
'sort'=>8
),array(
'id'=>15,
'pid'=>2,
'sort'=>0
),array(
'id'=>14,
'pid'=>12,
'sort'=>2
),array(
'id'=>17,
'pid'=>12,
'sort'=>1
),array(
'id'=>11,
'pid'=>12,
'sort'=>3
),array(
'id'=>1,
'pid'=>0,
'sort'=>2
),array(
'id'=>8,
'pid'=>7,
'sort'=>4
),array(
'id'=>10,
'pid'=>6,
'sort'=>8
),array(
'id'=>9,
'pid'=>6,
'sort'=>24
),array(
'id'=>7,
'pid'=>0,
'sort'=>82
),array(
'id'=>24,
'pid'=>20,
'sort'=>523
),array(
'id'=>26,
'pid'=>20,
'sort'=>2
),array(
'id'=>22,
'pid'=>20,
'sort'=>1
),array(
'id'=>20,
'pid'=>18,
'sort'=>6
),);
$classify = new classifybuild($arrsource);
$classify->sort = true;
$classify->make();
dump($classify->getresult());
字串陣列構建樹結構
源資料 let srclist 動物 昆蟲 螞蟻 動物 昆蟲 植物 草 綠色 植物 花 紅色 植物 花 黃色 去重分類 構建樹形資料如下 避免多根將每一條分類資訊路徑,視為容器陣列內的元素 使用固定指標記錄目標根位置,游標指標匹配節點,移動 新增節點之前判斷是否有同名節點存在,存在則進入其下層子節點...
基於C C 的二維動態陣列構建
本文對c c 中構建二維動態陣列的方法進行了總結,主要使用了malloc,calloc,new三種函式。二維動態陣列相當於每個元素為乙個指標的一維陣列,這個一維陣列就是行 每個指標又指向乙個儲存空間,這個儲存空間就是每一列。再通過使用malloc,calloc,new等函式為每個元素動態分配空間,就...
一維陣列應用
public class arraydemo system.out.println ch陣列的長度為 ch.length system.out.println intarray陣列的第2個元素為 intarray 1 system.out.println strarray陣列的第5個元素為 stra...