Rumah pembangunan bahagian belakang tutorial php PHP处理父子层级选择问题

PHP处理父子层级选择问题

Aug 08, 2016 am 09:21 AM
arr data Level

/**
     * @param $data 操作的数组
     * @param string $fieldPri 唯一键名,如果是表则是表的主键
     * @param string $fieldPid 父ID键名
     * @param int $pid 一级PID的值
     * @param string $sid 子ID用于获得指定指ID的所有父ID
     * @param int $type 操作方式1=>返回多维数组,2=>返回一维数组,3=>得到指定子ID(参数$sid)的所有父
     * @param string $html 名称前缀,用于在视图中显示层次感的列表
     * @param int $level 不需要传参数(执行时调用)
     * @return array
     */
	private function channel($data, $fieldPri = 'cid', $fieldPid = 'pid', $pid = 0, $sid = null, $type = 2, $html = " ", $level = 1)
    {
        if (!$data) {
            return array();
        }
        switch ($type) {
            case 1:
                $arr = array();
                foreach ($data as $v) {
                    if ($v[$fieldPid] == $pid) {
                        $arr[$v[$fieldPri]] = $v;
                        $arr[$v[$fieldPri]]['html'] = str_repeat($html, $level - 1);
                        $arr[$v[$fieldPri]]["Data"] = self::channel($data, $fieldPri, $fieldPid, $v[$fieldPri], $sid, $type, $html, $level + 1);
                    }
                }
                return $arr;
            case 2:
                $arr = array();
                $id = 0;
                foreach ($data as $v) {
                    if ($v[$fieldPid] == $pid) {
                        $arr[$id] = $v;
                        $arr[$id]['level'] = $level;
                        $arr[$id]['html'] = str_repeat($html, $level - 1);
                        $sArr = self::channel($data, $fieldPri, $fieldPid, $v[$fieldPri], $sid, $type, $html, $level + 1);
                        $arr = array_merge($arr, $sArr);
                        $id = count($arr);
                    }
                }
                return $arr;
            case 3:
                static $arr = array();
                foreach ($data as $v) {
                    if ($v[$fieldPri] == $sid) {
                        $arr[] = $v;
                        $sArr = self::channel($data, $fieldPri, $fieldPid, $pid, $v[$fieldPid], $type, $html, $level + 1);
                        $arr = array_merge($arr, $sArr);
                    }
                }
                return $arr;
        }
    }
Salin selepas log masuk

版权声明:本文为博主原创文章,未经博主允许不得转载。

以上就介绍了PHP处理父子层级选择问题,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

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!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

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)

Topik panas

Tutorial Java
1676
14
Tutorial PHP
1278
29
Tutorial C#
1257
24
Apakah data yang terdapat dalam folder data? Apakah data yang terdapat dalam folder data? May 05, 2023 pm 04:30 PM

Folder data mengandungi data sistem dan program, seperti tetapan perisian dan pakej pemasangan Setiap folder dalam folder Data mewakili jenis folder storan data yang berbeza, tidak kira sama ada fail Data merujuk kepada nama fail Data atau sambungan data , semuanya adalah fail data yang disesuaikan oleh sistem atau program Data ialah fail sandaran untuk penyimpanan data Secara umumnya, ia boleh dibuka dengan meidaplayer, notepad atau word.

Apa yang perlu dilakukan jika data beban mysql bercelaru? Apa yang perlu dilakukan jika data beban mysql bercelaru? Feb 16, 2023 am 10:37 AM

Penyelesaian kepada data beban mysql yang bercelaru: 1. Cari pernyataan SQL dengan aksara yang bercelaru;

请教怎么修改url某一参数的参数值呢?是要拆开了再拼回去吗 请教怎么修改url某一参数的参数值呢?是要拆开了再拼回去吗 Jun 13, 2016 am 10:24 AM

请问如何修改url某一参数的参数值呢?是要拆开了再拼回去吗?那么请问如何修改url某一参数的参数值呢?是要拆开了再拼回去吗?http://127.0.0.1/myo/newuser.php?mod=search&type=fastone比如现在我要修改mod=new要怎么做呢?------解决方案--------------------发送了请求

Apakah perbezaan antara xdata dan data? Apakah perbezaan antara xdata dan data? Dec 11, 2023 am 11:30 AM

Perbezaannya ialah: 1. xdata biasanya merujuk kepada pembolehubah bebas, manakala data merujuk kepada keseluruhan set data 2. xdata digunakan terutamanya untuk membina model analisis data, manakala data digunakan untuk analisis data dan statistik; untuk Analisis regresi, analisis varians, pemodelan ramalan, data boleh dianalisis menggunakan pelbagai kaedah statistik 4. xdata biasanya memerlukan prapemprosesan data, dan data boleh mengandungi data asal yang lengkap;

Tidak bolehkah data dalam komponen vue menjadi fungsi? Tidak bolehkah data dalam komponen vue menjadi fungsi? Dec 19, 2022 pm 05:22 PM

Tidak, data dalam komponen vue mestilah fungsi. Komponen dalam Vue digunakan untuk digunakan semula Untuk mengelakkan penggunaan semula data, ia ditakrifkan sebagai fungsi. Data data dalam komponen vue harus diasingkan antara satu sama lain dan tidak menjejaskan satu sama lain Setiap kali komponen digunakan semula, data data hendaklah disalin sekali Kemudian, apabila data data dalam komponen ditukar di tempat yang digunakan semula. data lain akan disalin Jika data data komponen tempatan yang digunakan semula tidak terjejas, anda perlu mengembalikan objek sebagai status komponen melalui fungsi data.

Lebih banyak pulangan daripada jualan: The Humane Ai Pin menjadi bencana komersial Lebih banyak pulangan daripada jualan: The Humane Ai Pin menjadi bencana komersial Aug 08, 2024 pm 01:14 PM

Sejurus selepas pelancaran Humane Ai Pin, ulasan pedas mendedahkan bahawa alat AI adalah apa-apa tetapi sedia untuk pasaran, kerana kebanyakan ciri asal yang diiklankan sama ada tidak berfungsi dengan betul atau hilang begitu saja, hayat bateri adalah

Gergasi tukang kunci Assa Abloy memperoleh satu lagi permulaan kunci pintar Gergasi tukang kunci Assa Abloy memperoleh satu lagi permulaan kunci pintar Sep 22, 2024 am 06:15 AM

Assa Abloy, pembuat kunci terbesar di dunia sejak permulaan abad ke-21, tidak mengelak daripada memperoleh pesaing dan bakal pesaing kerana ia berusaha untuk mengembangkan pasaran kawalan akses. Jenama kunci pintar yang berpangkalan di California Level Lock ialah ke

Kadar kegagalan projek AI melebihi 80% — kajian menyebut pengiktirafan masalah yang lemah dan tumpuan pada trend teknologi terkini antara masalah utama Kadar kegagalan projek AI melebihi 80% — kajian menyebut pengiktirafan masalah yang lemah dan tumpuan pada trend teknologi terkini antara masalah utama Aug 31, 2024 am 12:59 AM

Semua orang dan ibu saudara mereka nampaknya menaiki kereta api AI untuk mencari margin keuntungan yang melambung dan gembar-gembur pemasaran — lihat sahaja penjenamaan semula Ryzen terbaru AMD sebagai contoh utama gembar-gembur AI ini. Kajian terbaru yang dijalankan oleh RAND telah mendapati bahawa ini

See all articles