Transformer un arbre ( tabulation e retour à  la ligne ) en tableau php

    12 Mai 2012  

      Transformer un arbre ( tabulation e retour à  la ligne ) en tableau php

Pratique pour les select chain ( exemple : catégorie, sous catégorie, sous sous ... ect ) après à partir du tableau on peu faire une requete SQL :D
kundxaor 12 Mai 2012
# Catégorie Compatibilité Nombre de vues Site Archive
   MySQL PHP 4, PHP 5, PHP 7 3 535  

       Code Source PHP


 
 01    
 02    
 03    
 04    
 05    
 06    
 07    
 08    
 09    
 10    
 11    
 12    
 13    
 14    
 15    
 16    
 17    
 18    
 19    
 20    
 21    
 22    
 23    
 24    
 25    
 26    
 27    
 28    
 29    
 30    
 31    
 32    
 33    
 34    
 35    
 36    
 37    
 38    
 39    
 40    
 41    
 42    
 43    
 44    
 45    
 46    
 47    
 48    
 49    
 50    
 51    
 52    
 53    
 54    
 55    
 56    
 57    
 58    
 59    
 60    
 61    
 62    
 63    
 64    
 65    
 66    
 67    
 68    
 69    
 70    
 71    
 72    
 73    
 74    
 75    
 76    
 77    
 78    
 79    
 80    
 81    
 82    
 83    
 84    
 85    
 86    
 87    
 88    
 89    
 90    
 91    
 92    
 93    
 94    
 95    
 96    
 97    
 98    
 99    
 100    
 101    
 102    
 103    
 104    
 105    
 106    
 107    
 108    
 109    
 110    
 111    
 112    
 113    
 114    
 115    
 116    
 117    
 118    
 119    
 120    
 121    
 122    
 123    
 124    
 125    
 126    
 127    
 128    
 129    
 130    
 131    
 132    
 133    
 134    
 135    
 136    
 137    
 138    
 139    
 140    
 141    
 142    
 143    
 144    
 145    
 146    
 147    
 148    
 149    
 150    
 151    
 152    
 153    
 154    
 155    
 156    
 157    
 158    
 159    
 160    
 161    
 162    
 163    
 164    
 165    
 166    
 167    
 168    
 169    
 170    
 171    
 172    
 173    
 174    
 175    
 176    
 177    
 178    
 179    
 180    
                               
<?php
/**************************************************************************************/
/*
     Titre  : Transformer un arbre ( tabulation e retour à la ligne ) en tableau...                                      
                                                                                                                          
     URL    :  
     https://phpsources.net/code/php/mysql/657_transformer-un-arbre-tabulation-e-retour-eleligne-en-tableau-php
     Auteur         : kundxaor                                                                                            
     Date edition   : 12 Mai 2012                                                                                         
*/
/**************************************************************************************/
/*
Exemple avec ça dans le fichier selectChainModel.scm :
PHP
    Framework PHP
        ZendFramework
            ZendFramework 1
            ZendFramework 2
        Synfonie
            Synfonie 1
            Synfonie 2
    Versions
JavaScript
    Framework Js
        ExtJs
        jQuery
            jQuery mobile
            jQuery ui
*/
// Début des fonctions
function p_r($var)
{
    echo '<pre>';
    print_r($var);
    echo '</pre>';
}
// Fin des fonctions
$scm file_get_contents('selectChainModel.scm');
$scm str_replace("\n""|"$scm);
$scm str_replace("-""*tiret*"$scm); // | = séparation entre les items
$scm str_replace("    ""-"$scm); // - = tabulation
$array explode('|'$scm);
p_r($array);
echo '########';
foreach ($array as $key => $value)
{
    $newArray[$key]['nombreDeTabulations'] = substr_count($value'-');
    $newArray[$key]['label'] = str_replace('-'null$value);
    $newArray[$key]['id'] = md5($key $newArray[$key]['label']);
    if ($key == 0)
    {
        $newArray[$key]['pid'] = 0;
    }
}
$newArray array_reverse($newArray);
//p_r($newArray);
echo '######## avec pid<br />';
$newArrayNiveau2 = array();
foreach ($newArray as $key => $value)
{
    $newArrayNiveau2[$key] = $value;
    // ##
    echo '<hr /><br /># <b>Pour $newArray[' $key '] ( ' $newArray[$key][
'label'] . ' ) ( ' $newArray[$key]['nombreDeTabulations'] . 
' tab ) :</b><br />';
    // là cherche pour l'occurence juste au dessus
    $iKey $key 1;
    if (($newArray[$iKey]['nombreDeTabulations'] + 1) == $newArray[$key][
'nombreDeTabulations'])
    {
        $newArrayNiveau2[$key]['pid'] = $newArray[$iKey]['id'];
        echo '<b>[+1] $newArray[' $iKey '] ( ' $newArray[$iKey]['label'] .
 ' ) ( ' $newArray[$iKey]['nombreDeTabulations'] . 
' tab ) est bien le parent de $newArray[' $key '] ( ' $newArray[$key][
'label'] . ' ) ( ' $newArray[$key]['nombreDeTabulations'] . 
' tab )</b><br /><br />';
    }
    else
    {
        if (isset($newArray[$iKey]))
        {
            echo '[-2] $newArray[' $iKey '] ( ' $newArray[$iKey]['label'
' ) ( ' $newArray[$iKey]['nombreDeTabulations'] . 
' tab ) n\'est pas le parent de $newArray[' $key '] ( ' $newArray[$key][
'label'] . ' ) ( ' $newArray[$key]['nombreDeTabulations'] . ' tab )<br />';
            $iKey++;
            
// là cherche pour toutes les autres occurences si la première s'est mal
// déroulée
            echo 
'-> la cherche pour toutes les autres occurences si la premiere s\'est mal' .
' deroulee<br />';
            echo '-> occurence n° ' $iKey ' -> si  ' . ($newArray[$iKey][
'nombreDeTabulations'] + 1) . ' ( ' $newArray[$iKey]['label'] . ' ) ( ' 
$newArray[$iKey]['nombreDeTabulations'] . ' tab ) != ' $newArray[$key][
'nombreDeTabulations'] . ' ( ' $newArray[$key]['label'] . ' ) ( ' $newArray[
$key]['nombreDeTabulations'] . ' tab ) :: on continue de chercher...<br />';
            if (($newArray[$iKey]['nombreDeTabulations'] + 1) == $newArray[$key]
['nombreDeTabulations'])
            {
                // il sagit bien de son parent direct
                $newArrayNiveau2[$key]['pid'] = $newArray[$iKey]['id'];
                echo '<b>[+3] $newArray[' $iKey '] ( ' $newArray[$iKey][
'label'] . ' ) ( ' $newArray[$iKey]['nombreDeTabulations'] . 
' tab ) est bien le parent de $newArray[' $key '] ( ' $newArray[$key][
'label'] . ' ) ( ' $newArray[$key]['nombreDeTabulations'] . ' tab )</b><br />'
;
            }
            else
            {
                while (isset($newArray[$iKey]) AND ($newArray[$iKey][
'nombreDeTabulations'] + 1) != $newArray[$key]['nombreDeTabulations'])
                {
                    if (($newArray[$iKey]['nombreDeTabulations'] + 1) == 
$newArray[$key]['nombreDeTabulations'])
                    {
                        // il sagit bien de son parent direct
                        $newArrayNiveau2[$key]['pid'] = $newArray[$iKey]['id'];
                        echo '<b>[+3] $newArray[' $iKey '] ( ' $newArray[
$iKey]['label'] . ' ) ( ' $newArray[$iKey]['nombreDeTabulations'] . 
' tab ) est bien le parent de $newArray[' $key '] ( ' $newArray[$key][
'label'] . ' ) ( ' $newArray[$key]['nombreDeTabulations'] . ' tab )</b><br />'
;
                        break;
                    }
                    else
                    {
                        echo '[-4] $newArray[' $iKey '] ( ' $newArray[
$iKey]['label'] . ' ) ( ' $newArray[$iKey]['nombreDeTabulations'] . 
' tab ) n\'est pas le parent de $newArray[' $key '] ( ' $newArray[$key][
'label'] . ' ) ( ' $newArray[$key]['nombreDeTabulations'] . ' tab )<br />';
                    }
                    $iKey++;
                    if (isset($newArray[$iKey]))
                    {
                        if (($newArray[$iKey]['nombreDeTabulations'] + 1) == 
$newArray[$key]['nombreDeTabulations'])
                        {
                            // il sagit bien de son parent direct
                            $newArrayNiveau2[$key]['pid'] = $newArray[$iKey][
'id'];
                            echo '<b>[+5] $newArray[' $iKey '] ( ' 
$newArray[$iKey]['label'] . ' ) ( ' $newArray[$iKey]['nombreDeTabulations'] . 
' tab ) est bien le parent de $newArray[' $key '] ( ' $newArray[$key][
'label'] . ' ) ( ' $newArray[$key]['nombreDeTabulations'] . ' tab )</b><br />'
;
                            break;
                        }
                        else
                        {
                            echo '[-6] $newArray[' $iKey '] ( ' $newArray[
$iKey]['label'] . ' ) ( ' $newArray[$iKey]['nombreDeTabulations'] . 
' tab ) n\'est pas le parent de $newArray[' $key '] ( ' $newArray[$key][
'label'] . ' ) ( ' $newArray[$key]['nombreDeTabulations'] . ' tab )<br />';
                        }
                    }
                    else
                    {
                        echo '[-7] <b>$newArray[' $key '] ( ' $newArray[
$key]['label'] . ' ) ( ' $newArray[$key]['nombreDeTabulations'] . 
' tab ) n\'as pas de parents</b> <br />';
                        $newArrayNiveau2[$key]['pid'] = md5('1');
                    }
                }
            }
        }
        else
        {
            echo '[-7] <b>$newArray[' $key '] ( ' $newArray[$key]['label']
 . ' ) ( ' $newArray[$key]['nombreDeTabulations'] . 
' tab ) n\'as pas de parents</b> <br />';
            $newArrayNiveau2[$key]['pid'] = md5('1');
        }
    }
    // ##    
}
p_r($newArrayNiveau2);
echo '########';

...  Manuel PHP - Fonctions du code source

   php.net  Description Versions PHP OUTIL
   array Crée un tableau PHP 4, PHP 5, PHP 7
   array_reverse Inverse l'ordre des éléments d'un tableau PHP 4, PHP 5, PHP 7
   echo Affiche une chaîne de caractères PHP 4, PHP 5, PHP 7
   explode Coupe une chaîne en segments PHP 4, PHP 5, PHP 7
   file_get_contents Lit tout un fichier dans une chaîne - (PHP 4 >= 4.3.0, PHP 5, PHP 7) PHP 4, PHP 5, PHP 7
   isset Détermine si une variable est affectée PHP 4, PHP 5, PHP 7
   md5 Calcule le md5 d'une chaîne - (PHP 4, PHP 5, PHP 7, PECL hash:1.1-1.3) PHP 4, PHP 5, PHP 7
   print_r Affiche des informations lisibles pour une variable PHP 4, PHP 5, PHP 7
   str_replace Remplace toutes les occurrences dans une chaîne PHP 4, PHP 5, PHP 7
   substr_count Compte le nombre d'occurrences de segments dans une chaîne PHP 4, PHP 5, PHP 7


  • L'ajout de commentaire est libre et ne demande pas d'inscription,
  •   invité

nous vous encourageons à contribuer à l'utilisation de PHP en ajoutant vos remarques.

  MySQL [ 45 ]

Affiche les resultat d'un requete dans une liste déroulante Afficher que les données d'une table commenà§ant par la lettre de votre choix. Basculer entre deux serveurs sans modifier les sources A chaque fois bilan rapide sur ses tables et leurs contenus Code pour convertir dans un format Latin ou UTF8 Connaitre et supprimer les doublons dans une table SQL Connaitre massivement les doublons dans une table SQL Connection Connection à  la base de donnée Connection et de déconnection à  une bd mysql Connexion a une instance Microsoft Sql Server Connexion et sélection d'une base copier les infos d'une table dans une autre table Détecter, récupérer et afficher dynamiquement les noms des champs retournés par MySQL Dump (sauvegarde) avec PHP d'une base de donnée MySQL Enleve les doublons dans une requàªte Explorateur MySQL Fichier d'installation de table MySQL Fonction PHP équivalente à  la commande DESCRIBE de MySQL Fonction pour chercher des datas MySQL Générer une liste déroulante Identifier tables sans entrer dans administration Insérer du texte sans erreur dans une base MySQL Inserer plusieurs enregistrements dans la màªme requàªte MySQL Libere la mémoire utilisé dans les requetes MySQL Liste et supprime les tables d'une base MySQL Lit les informations de la dernière requàªte MySQL envoyée au serveur modifier en masse le préfixe du nom de tables mysql Mysql comme PHPMyAdmin Nettoyer une table en 2 lignes de code Ping le serveur MySQL Prevenu si crash Récupérer la place perdue dans une base de données MySQL Récupérer le dernier ID inseré dans une table Récupérer les n premiers enregistrements classés par ordre decroissant REGEX sur des URL Sélection aléatoire dans la table Simulation du auto increment de MySQL Supprimer les champs qui contiennent un nombre de mots trop faible Supprimer une table dans la base   Transformer un arbre ( tabulation e retour à  la ligne ) en tableau php Vérifier l'existence d'une table SQL Vérifier si un pseudo existe déjà  dans la table Vérifier si une table existe dans une base de données Vider une table de son contenu