现有一个数组
$d = array( array( '公告', 1, 0 ), array( '文章', 2, 0 ), array( '文章1', 3, 2 ), array( '文章2', 4, 2), array( '文章1评论', 5, 3 ), array( '文章2评论', 6, 4 ), array( '文章1评论1', 7, 3 ), array( '文章1评论评论', 8, 5 ),);期望如下输出
公告文章 文章1 文章1评论 文章1评论评论 文章1评论1 文章2 文章2评论
于是可以
foreach($d as $t) list($a[$pid][$id], $id, $pid) = $t;得到
Array( [0] => Array ( [1] => 公告 [2] => 文章 ) [2] => Array ( [3] => 文章1 [4] => 文章2 ) [3] => Array ( [5] => 文章1评论 [7] => 文章1评论1 ) [4] => Array ( [6] => 文章2评论 ) [5] => Array ( [8] => 文章1评论评论 ))可以看到,数据按第3列聚类了
于是再用一个递归函数就可实现数据的展示了
function foo($ar, $pid=0, $deep=0) { foreach($ar[$pid] as $k=>$v) { printf("%s%s\n", str_repeat(' ', $deep), $v); if(isset($ar[$k])) foo($ar, $k, $deep+2); }}调用 foo($a);
回复讨论(解决方案)
版主是个大好人
斑竹对无限级树情有独钟。
每次看都有新收获。
前排 学习!
学习了。呵呵
原来是这样表现的。
真简洁,学习了。
写的不错啊,学习了
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(); }
不好意思,上面那个发错了。。。我不是故意的。。我是想试一下这个编辑器的功能
学习了
牛X,学习了
http://www.javadad.com
学习了 版主
不错,学习学习了
很不错,学习了
支持一下
hao......
观摩,学习,支持,接分
学习了。
谢谢楼主分享
谢谢楼主分享,学习啦!
学习了
眩技那
简洁明了 树 总是用递归方便
真的很不错,很有用,可以学习学习
LZ的思路和我用的思路是一样的,但代码比我的要少很多,比我高明多了。
这种算法的思路就是建立一人以parent_id为键名的二级数组,用递归调用这个数组。
array(2978) { [0]=> object(stdClass)#1 (4) { ["id"]=> string(8) "50094064" ["subject"]=> string(22) "在线影视/电子书" ["parent_id"]=> int(0) ["type_id"]=> int(0) }.........
上面是组织形式,个人习惯把这分类生成对象保存到txt文本里面,生成的有自定义键名,不能直接list(),用array_values取出后,再用list还是不正常,又换了$t的元素键名,还是不正常。
//源数组 转化了数组 下面是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;}
又不能用了,看了半天list的说明,也没能找到答案
附上本人原来的做法:
对于list转化二维数组的,个人采取比较笨拙的方法,源数组与上面的类似
//以父级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; } }
$tmp就是相当于LZ方法的数组$a
从项目文件里面拿出来的,写在控制器里面的,就不改了
//用于存放数据(整理好的)的公共变量 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); } }
换成javascript的就最好
学习了,不错
不错不错,这个必须收藏一下。
好 很简单 方便了
错不错,这个必须收藏一下。
学习了 方法很简便
学习了 方法很简便
学习了
已阅..
前面也做过这个,不过是直接写递归函数从数据库取的。
很?大,又?到一招
观摩,学习,支持,接分

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.

Dalam PHP, gunakan kata kunci klon untuk membuat salinan objek dan menyesuaikan tingkah laku pengklonan melalui kaedah Magic \ _ _ _. 1. Gunakan kata kunci klon untuk membuat salinan cetek, mengkloning sifat objek tetapi bukan sifat objek. 2. Kaedah klon \ _ \ _ boleh menyalin objek bersarang untuk mengelakkan masalah menyalin cetek. 3. Beri perhatian untuk mengelakkan rujukan pekeliling dan masalah prestasi dalam pengklonan, dan mengoptimumkan operasi pengklonan untuk meningkatkan kecekapan.

PHP sesuai untuk pembangunan web dan sistem pengurusan kandungan, dan Python sesuai untuk sains data, pembelajaran mesin dan skrip automasi. 1.PHP berfungsi dengan baik dalam membina laman web dan aplikasi yang cepat dan berskala dan biasanya digunakan dalam CMS seperti WordPress. 2. Python telah melakukan yang luar biasa dalam bidang sains data dan pembelajaran mesin, dengan perpustakaan yang kaya seperti numpy dan tensorflow.

Pemain utama dalam tajuk cache HTTP termasuk kawalan cache, ETAG, dan modifikasi terakhir. 1.Cache-Control digunakan untuk mengawal dasar caching. Contoh: Cache-Control: Max-Age = 3600, Awam. 2. ETAG mengesahkan perubahan sumber melalui pengenal unik, Contoh: ETAG: "686897696A7C876B7E". 3. Modified Last Menunjukkan Masa Pengubahsuaian Terakhir Sumber, Contoh: Modified Last: Wed, 21OCT201507: 28: 00GMT.

Dalam php, kata laluan_hash dan kata laluan 1) password_hash menjana hash yang mengandungi nilai garam untuk meningkatkan keselamatan. 2) Kata Laluan_verify Sahkan kata laluan dan pastikan keselamatan dengan membandingkan nilai hash. 3) MD5 dan SHA1 terdedah dan kekurangan nilai garam, dan tidak sesuai untuk keselamatan kata laluan moden.

PHP adalah bahasa skrip sisi pelayan yang digunakan untuk pembangunan web dinamik dan aplikasi sisi pelayan. 1.Php adalah bahasa yang ditafsirkan yang tidak memerlukan kompilasi dan sesuai untuk perkembangan pesat. 2. Kod PHP tertanam dalam HTML, menjadikannya mudah untuk membangunkan laman web. 3. PHP memproses logik sisi pelayan, menghasilkan output HTML, dan menyokong interaksi pengguna dan pemprosesan data. 4. PHP boleh berinteraksi dengan pangkalan data, penyerahan borang proses, dan melaksanakan tugas-tugas sampingan pelayan.

PHP telah membentuk rangkaian sejak beberapa dekad yang lalu dan akan terus memainkan peranan penting dalam pembangunan web. 1) PHP berasal pada tahun 1994 dan telah menjadi pilihan pertama bagi pemaju kerana kemudahan penggunaannya dan integrasi lancar dengan MySQL. 2) Fungsi terasnya termasuk menghasilkan kandungan dinamik dan mengintegrasikan dengan pangkalan data, yang membolehkan laman web dikemas kini secara real time dan dipaparkan secara peribadi. 3) Aplikasi dan ekosistem PHP yang luas telah mendorong kesan jangka panjangnya, tetapi ia juga menghadapi kemas kini versi dan cabaran keselamatan. 4) Penambahbaikan prestasi dalam beberapa tahun kebelakangan ini, seperti pembebasan Php7, membolehkannya bersaing dengan bahasa moden. 5) Pada masa akan datang, PHP perlu menangani cabaran baru seperti kontena dan microservices, tetapi fleksibiliti dan komuniti aktif menjadikannya boleh disesuaikan.

Manfaat utama PHP termasuk kemudahan pembelajaran, sokongan pembangunan web yang kukuh, perpustakaan dan kerangka yang kaya, prestasi tinggi dan skalabilitas, keserasian silang platform, dan keberkesanan kos. 1) mudah dipelajari dan digunakan, sesuai untuk pemula; 2) integrasi yang baik dengan pelayan web dan menyokong pelbagai pangkalan data; 3) mempunyai rangka kerja yang kuat seperti Laravel; 4) Prestasi tinggi dapat dicapai melalui pengoptimuman; 5) menyokong pelbagai sistem operasi; 6) Sumber terbuka untuk mengurangkan kos pembangunan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft