Maison développement back-end tutoriel 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;
        }
    }
Copier après la connexion

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

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

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles données se trouvent dans le dossier de données ? Quelles données se trouvent dans le dossier de données ? May 05, 2023 pm 04:30 PM

Le dossier de données contient des données du système et du programme, telles que les paramètres logiciels et les packages d'installation. Chaque dossier du dossier Données représente un type différent de dossier de stockage de données, que le fichier de données fasse référence au nom de fichier Données ou à l'extension Données nommées. , ce sont tous des fichiers de données personnalisés par le système ou le programme. Les données sont un fichier de sauvegarde pour le stockage des données. Généralement, elles peuvent être ouvertes avec meidaplayer, le bloc-notes ou Word.

Que faire si les données de chargement MySQL sont tronquées ? Que faire si les données de chargement MySQL sont tronquées ? Feb 16, 2023 am 10:37 AM

Solution aux données de chargement MySQL tronquées : 1. Recherchez l'instruction SQL avec des caractères tronqués ; 2. Modifiez l'instruction en "LOAD DATA LOCAL INFILE "employee.txt" INTO TABLE EMPLOYEE jeu de caractères utf8 ;".

Quelles sont les différences entre xdata et data Quelles sont les différences entre xdata et data Dec 11, 2023 am 11:30 AM

Les différences sont les suivantes : 1. xdata fait généralement référence à des variables indépendantes, tandis que data fait référence à l'ensemble des données ; 2. xdata est principalement utilisé pour créer des modèles d'analyse de données, tandis que data est utilisé pour l'analyse de données et les statistiques ; pour l'analyse de régression, l'analyse de variance, la modélisation prédictive, les données peuvent être analysées à l'aide de diverses méthodes statistiques ; 4. xdata nécessite généralement un prétraitement des données et les données peuvent contenir des données originales complètes ;

Plus de retours que de ventes : le Humane Ai Pin devient un désastre commercial Plus de retours que de ventes : le Humane Ai Pin devient un désastre commercial Aug 08, 2024 pm 01:14 PM

Peu de temps après le lancement du Humane Ai Pin, des critiques cinglantes ont révélé que le gadget IA était tout sauf prêt pour le marché, car la plupart des fonctionnalités initialement annoncées ne fonctionnaient pas correctement ou manquaient tout simplement, la durée de vie de la batterie était

Les taux d'échec des projets d'IA dépassent 80 % – une étude cite une mauvaise reconnaissance des problèmes et une concentration sur les dernières tendances technologiques parmi les problèmes majeurs Les taux d'échec des projets d'IA dépassent 80 % – une étude cite une mauvaise reconnaissance des problèmes et une concentration sur les dernières tendances technologiques parmi les problèmes majeurs Aug 31, 2024 am 12:59 AM

Tout le monde et leur tante semblent monter à bord du train de l'IA à la recherche de marges bénéficiaires gonflées et de battage publicitaire - il suffit de regarder le récent changement de marque Ryzen d'AMD comme un excellent exemple de ce battage médiatique de l'IA. Une étude récente menée par RAND a révélé que cela

MySQL écrit des journaux d'erreurs fous MySQL écrit des journaux d'erreurs fous Feb 18, 2024 pm 05:00 PM

Base de données métier principale, la version est MySQL8.34 Community Server Edition. Depuis son lancement, le journal d'erreurs de ce serveur de base de données a augmenté très rapidement (comme le montre la figure ci-dessous), et peut atteindre plus de 10 Go en capacité toutes les 24 heures. Étant donné qu'une alarme de panne s'est produite et que l'accès normal à l'entreprise n'a pas été affecté, le personnel concerné n'a pas été autorisé à redémarrer le service MySQL. Face à cette situation, j'ai dû mettre en place une tâche planifiée automatique pour nettoyer ces logs à heure fixe chaque nuit. Pour des opérations spécifiques, exécutez "crontab -e" sur la ligne de commande système et ajoutez la ligne de texte suivante : 0001***echo>/data/mysql8/data/mysql_db/mysql.log Enregistrez et quittez le mode édition.

Les données du composant vue ne peuvent-elles pas être une fonction ? Les données du composant vue ne peuvent-elles pas être une fonction ? Dec 19, 2022 pm 05:22 PM

Non, les données du composant vue doivent être une fonction. Les composants de Vue sont utilisés pour la réutilisation Afin d'empêcher la réutilisation des données, ils sont définis comme des fonctions. Les données du composant vue doivent être isolées les unes des autres et ne pas s'influencer les unes les autres. Chaque fois que le composant est réutilisé, les données doivent être copiées une fois. Plus tard, lorsque les données du composant sont modifiées dans un endroit réutilisé, les autres données seront copiées. Si les données des composants locaux réutilisés ne sont pas affectées, vous devez renvoyer un objet comme état du composant via la fonction de données.

请教怎么修改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要怎么做呢?------解决方案--------------------发送了请求

See all articles