用 list 处理树状数据(邻接列表)
现有一个数组
static void Main(string[] args)
{
double a, b, c, p, h, area;
Console.Write("请输入三角形的边A: ");
string s = Console.ReadLine();
a = double.Parse(s);
Console.Write("请输入三角形的边B: ");
s = Console.ReadLine();
b = double.Parse(s);
Console.Write("请输入三角形的边C: ");
s = Console.ReadLine();
c = double.Parse(s);
if (a > 0 && b > 0 && c > 0 && a + b > c && a + c > b && b + c > a)
{
Console.WriteLine("三角形的三边分别为:a={0},b={1},c={2}", a, b, c);
p = a + b + c;
h = p / 2;
area = Math.Sqrt(h * (h - a) * (h - b) * (h - c));
Console.WriteLine("三角形的周长={0},面积={1}",p,area);
}
else Console.WriteLine("无法构成三角形!");
Console.ReadKey();
}
array(2978) {
[0]=>
object(stdClass)#1 (4) {
["id"]=>
string(8) "50094064"
["subject"]=>
string(22) "在线影视/电子书"
["parent_id"]=>
int(0)
["type_id"]=>
int(0)
}
.........
//源数组 转化了数组 下面是foreach里面的内容 这个list形式不能用
$t=array_values($t);
list($id,$a[$pid][$t[$id],$pid,$tid) = $t;
//源数据转换成了对象
foreach($object_tmp as $t) {
$t=array($t->subject,$t->id,$t->parent_id);
list($a[$pid][$id],$id,$pid) = $t;
}
//源数据转换成了对象
foreach($object_tmp as $t) {
$t=array($t->id,$t->subject,$t->parent_id);
list($id,$a[$pid][$id],$pid) = $t;
}
//以父级id为键名的 更多一维的(一般3维)数组
$tmp=array();
foreach ($item_category as $it){
if( count($tmp[$it["parent_id"]]) ){
$tmp[$it["parent_id"]][count($tmp[$it["parent_id"]])]=$it;
}else{
$tmp[$it["parent_id"]][0]=$it;
}
}
//用于存放数据(整理好的)的公共变量
var $sorta=array();
//树形排序核心部分 pid:父级起始 tmp以父级id为第一维的数组
public function get_all_($pid,$tmp){
$tt=$tmp[$pid];
foreach($tt as $ttt){
$this->sorta[count($this->sorta)]=$ttt;
$this->get_all_($ttt["id"],$tmp);
}
}