Jadual Kandungan
Thinkphp的list_to_tree 实现无限级分类列出所有节点
Rumah php教程 php手册 Thinkphp的list_to_tree 实现无限级分类列出所有节点

Thinkphp的list_to_tree 实现无限级分类列出所有节点

Jun 13, 2016 am 09:28 AM
nod

Thinkphp的list_to_tree 实现无限级分类列出所有节点

list_to_tree 使用起来十分方便,详细可查看手册。因为我在用的时候需要同时列出所有节点,所以写了一个递归函数,拿出来供大家参考。
public function index(){
    Load('extend');            //加载扩展方法
    $Category=D('Category');
    $list=$Category->order('sort desc')->select();//实现同级节点排序
    $list=list_to_tree($list,'id','fid'); //详细参数见手册
    $list=$this->findChild($list);    
    dump($list);
}
protected  function findChild($arr){
        static $tree=array();
        foreach ($arr as $key=>$val){
                $tree[]=$val;
                if (isset($val['_child'])){
                    $this->findChild($val['_child']);
                }        
            }
    return $tree;
}
Salin selepas log masuk


Salin selepas log masuk

/**
 * 把返回的数据集转换成Tree
 * @access public
 * @param array $list 要转换的数据集
 * @param string $pid parent标记字段
 * @param string $level level标记字段
 * @return array
 */
function list_to_tree($list, $pk='id',$pid = 'pid',$child = '_child',$root=0) {
    // 创建Tree
    $tree = array();
    if(is_array($list)) {
        // 创建基于主键的数组引用
        $refer = array();
        foreach ($list as $key => $data) {
            $refer[$data[$pk]] =& $list[$key];
        }
        foreach ($list as $key => $data) {
            // 判断是否存在parent
            $parentId = $data[$pid];
            if ($root == $parentId) {
                $tree[] =& $list[$key];
            }else{
                if (isset($refer[$parentId])) {
                    $parent =& $refer[$parentId];
                    $parent[$child][] =& $list[$key];
                }
            }
        }
    }
    return $tree;
}

/**
 * 对查询结果集进行排序
 * @access public
 * @param array $list 查询结果
 * @param string $field 排序的字段名
 * @param array $sortby 排序类型
 * asc正向排序 desc逆向排序 nat自然排序
 * @return array
 */
function list_sort_by($list,$field, $sortby='asc') {
   if(is_array($list)){
       $refer = $resultSet = array();
       foreach ($list as $i => $data)
           $refer[$i] = &$data[$field];
       switch ($sortby) {
           case 'asc': // 正向排序
                asort($refer);
                break;
           case 'desc':// 逆向排序
                arsort($refer);
                break;
           case 'nat': // 自然排序
                natcasesort($refer);
                break;
       }
       foreach ( $refer as $key=> $val)
           $resultSet[] = &$list[$key];
       return $resultSet;
   }
   return false;
}

/**
 * 在数据列表中搜索
 * @access public
 * @param array $list 数据列表
 * @param mixed $condition 查询条件
 * 支持 array('name'=>$value) 或者 name=$value
 * @return array
 */
function list_search($list,$condition) {
    if(is_string($condition))
        parse_str($condition,$condition);
    // 返回的结果集合
    $resultSet = array();
    foreach ($list as $key=>$data){
        $find   =   false;
        foreach ($condition as $field=>$value){
            if(isset($data[$field])) {
                if(0 === strpos($value,'/')) {
                    $find   =   preg_match($value,$data[$field]);
                }elseif($data[$field]==$value){
                    $find = true;
                }
            }
        }
        if($find)
            $resultSet[]     =   &$list[$key];
    }
    return $resultSet;
}
Salin selepas log masuk



Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Soal berat minimum dalam subpokok bermula dari nod X dan jarak paling banyak D Soal berat minimum dalam subpokok bermula dari nod X dan jarak paling banyak D Aug 25, 2023 am 11:25 AM

Apabila melakukan pengaturcaraan komputer, kadangkala adalah perlu untuk mencari berat minimum subpokok yang berasal dari nod tertentu, dengan syarat subpokok tidak boleh mengandungi nod yang lebih daripada unit D dari nod yang ditentukan. Masalah ini timbul dalam pelbagai bidang dan aplikasi, termasuk teori graf, algoritma berasaskan pokok, dan pengoptimuman rangkaian. Subpokok ialah subset struktur pokok yang lebih besar, dengan nod yang ditentukan berfungsi sebagai nod akar subpokok. Subpohon mengandungi semua keturunan nod akar dan tepi penghubungnya. Berat nod merujuk kepada nilai khusus yang diberikan kepada nod itu, yang boleh mewakili kepentingan, kepentingan atau metrik lain yang berkaitan. Dalam masalah ini, matlamatnya adalah untuk mencari berat minimum antara semua nod dalam subpokok sambil mengehadkan subpokok kepada nod yang paling banyak unit D dari nod akar. Dalam artikel berikut, kita akan menyelidiki kerumitan perlombongan pemberat minimum daripada subpokok

Bagaimana untuk melaksanakan fungsi salinan dan potong nod peta minda melalui Vue dan jsmind? Bagaimana untuk melaksanakan fungsi salinan dan potong nod peta minda melalui Vue dan jsmind? Aug 15, 2023 pm 05:57 PM

Bagaimana untuk melaksanakan fungsi salinan dan potong nod peta minda melalui Vue dan jsmind? Peta minda ialah alat pemikiran biasa yang boleh membantu kita menyusun pemikiran kita dan menyusun logik pemikiran kita. Fungsi salin dan potong nod adalah operasi yang biasa digunakan dalam peta minda, yang membolehkan kami menggunakan semula nod sedia ada dengan lebih mudah dan meningkatkan kecekapan organisasi berfikir. Dalam artikel ini, kami akan menggunakan dua alat Vue dan jsmind untuk melaksanakan fungsi salinan dan potong nod peta minda. Pertama, kita perlu memasang Vue dan jsmind dan buat

Apakah kaedah untuk memadam nod dalam js Apakah kaedah untuk memadam nod dalam js Sep 01, 2023 pm 05:00 PM

Kaedah untuk memadam nod dalam js ialah: 1. Kaedah removeChild() digunakan untuk mengeluarkan nod anak yang ditentukan daripada nod induk Ia memerlukan dua parameter Parameter pertama ialah nod anak untuk dipadamkan, dan parameter kedua ialah nod induk. 2. Kaedah parentNode.removeChild() boleh dipanggil terus melalui nod induk untuk memadamkan nod anak; Atribut innerHTML digunakan untuk memadam kandungan nod.

Cari laluan terpendek antara mana-mana dua nod menggunakan algoritma Floyd-Warshal Cari laluan terpendek antara mana-mana dua nod menggunakan algoritma Floyd-Warshal Sep 20, 2023 pm 02:21 PM

C++ mempunyai makro, yang ditakrifkan sebagai sekeping kod atau nilai yang dijangkakan, dan ia akan digunakan semula apabila pengguna memerlukannya. Algoritma Floyd-Walshall ialah proses mencari laluan terpendek antara semua pasangan bucu dalam graf berwajaran tertentu. Algoritma mengikut pendekatan pengaturcaraan dinamik untuk mencari graf berat minimum. Marilah kita memahami maksud algoritma Floyd-Walshall melalui rajah - ambil bucu 1 sebagai sumber dan bucu 4 sebagai destinasi dan cari laluan terpendek di antara mereka. Kami telah melihat bahawa terdapat dua laluan yang boleh disambungkan ke bucu sasaran 4. 1->4 – tepi mempunyai berat 51->8->3->4 – berat tepi (1+2+1) ialah 4. Dalam graf I yang diberikan, kita melihat tepi terkecil yang menghubungkan dua bucu. Jadi di sini puncaknya

Cara membuat, memadam, menambah dan menggantikan nod elemen dalam js (dengan contoh kod) Cara membuat, memadam, menambah dan menggantikan nod elemen dalam js (dengan contoh kod) Aug 06, 2022 pm 05:26 PM

Artikel ini terutamanya memperkenalkan cara membuat, memadam, menambah dan menggantikan nod elemen dalam js. Saya harap ia akan membantu rakan yang memerlukan!

Menyemak sama ada laluan antara dua nod dalam graf yang diberikan mewakili laluan terpendek Menyemak sama ada laluan antara dua nod dalam graf yang diberikan mewakili laluan terpendek Sep 07, 2023 pm 06:57 PM

Untuk menyemak sama ada laluan yang diberikan antara dua pusat graf mematuhi laluan terpendek, ini boleh dikira dengan membandingkan keseluruhan berat tepi sepanjang laluan yang diberikan kepada jarak terpendek antara gabungan pusat yang sama menggunakan laluan terpendek yang boleh dipercayai, seperti Pengiraan Dijkstra atau pengiraan Floyd−Warshall. Jika semua pemberat tepi pada laluan tertentu sepadan dengan pemadaman paling terhad, maka ia mewakili laluan paling mudah. Juga: Jika berat tepi keseluruhan lebih menonjol daripada jarak terpendek, ini menunjukkan bahawa terdapat jarak pendek antara dua pusat dalam graf. Kaedah Digunakan Algoritma Dijkstra Floyd−Warshall Algorithm dengan Kos Pembalikan Tepi Algoritma Greedy Pengiraan Dijkstra mungkin merupakan pengiraan traversal graf yang popular.

Dengan ChatGPT pemalam, ia adalah nod, tetapi bukan pusat Dengan ChatGPT pemalam, ia adalah nod, tetapi bukan pusat Apr 04, 2023 am 11:45 AM

OpenAI ialah nod (walaupun nod penting) dalam dunia dialog robot-robot, tetapi ia bukan pusatnya. ChatGPT telah melancarkan mekanisme Plugin, yang merupakan perkembangan yang sangat menarik. Semua orang sebulat suara mengulas bahawa "sistem pengendalian telah dilahirkan." Kenyataan ini adalah salah sama sekali. OpenAI ialah nod (walaupun nod penting) dalam dunia dialog robot-robot, tetapi ia bukan pusatnya. Saya sentiasa mempunyai gambaran dalam fikiran saya: dunia di mana robot bercakap dengan robot. Orang ramai berbual dengan robot dan membiarkan robot membantu manusia menyelesaikan tugas melalui rakan robotnya. Pemalam ChatGPT menunjukkan dunia dengan sempurna

Dalam program C, terjemah kandungan berikut ke dalam bahasa Cina: Program untuk mencari nod ke-n dari bahagian bawah senarai terpaut Dalam program C, terjemah kandungan berikut ke dalam bahasa Cina: Program untuk mencari nod ke-n dari bahagian bawah senarai terpaut Sep 13, 2023 pm 03:13 PM

Diberi n nod, tugasnya adalah untuk mencetak nod ke-n pada penghujung senarai terpaut. Program ini tidak boleh mengubah susunan nod dalam senarai, tetapi hanya boleh mencetak nod ke-n dari nod terakhir senarai terpaut. Contoh Input-:102030405060 N=3Output-:40 Dalam contoh di atas, bermula dari nod pertama, traverse ke count-n nod, iaitu, 10,2030,40,50,60, jadi nod ketiga hingga terakhir ialah 40 . Daripada merentasi keseluruhan senarai dengan begitu cekap pendekatan yang boleh anda ikuti - dapatkan penunjuk sementara untuk, katakan, temp jenis nod tetapkan penunjuk sementara ini ke nod pertama yang ditunjuk oleh penuding kepala untuk menetapkan pembilang kepada yang dalam senarai

See all articles