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

Tag artikel 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)

Apakah data yang terdapat dalam folder data? Apakah data yang terdapat dalam folder data? May 05, 2023 pm 04:30 PM

Apakah data yang terdapat dalam folder data?

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

Apa yang perlu dilakukan jika data beban mysql bercelaru?

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

Apakah perbezaan antara xdata dan data?

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

Kadar kegagalan projek AI melebihi 80% — kajian menyebut pengiktirafan masalah yang lemah dan tumpuan pada trend teknologi terkini antara masalah utama

MySQL menulis log ralat gila MySQL menulis log ralat gila Feb 18, 2024 pm 05:00 PM

MySQL menulis log ralat gila

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

Tidak bolehkah data dalam komponen vue menjadi fungsi?

Penggodam kini boleh membina semula kandungan skrin daripada sinaran elektromagnet HDMI Penggodam kini boleh membina semula kandungan skrin daripada sinaran elektromagnet HDMI Jul 30, 2024 am 10:01 AM

Penggodam kini boleh membina semula kandungan skrin daripada sinaran elektromagnet HDMI

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

Lebih banyak pulangan daripada jualan: The Humane Ai Pin menjadi bencana komersial

See all articles