IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

supprimer tableau d'un tableau multidimensionnel [PHP 5.0]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Par défaut supprimer tableau d'un tableau multidimensionnel
    Bonjour,

    J'ai un tableau contenant des tableaux...
    Comment faire pour supprimer un tableau du tableau global?

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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
     
    function parcours_tableau($tableau) 
    {
    	global $sauv_tableau,$sauv_cle,$retour;
    	$test_bib_doc=0;
    	$test_valid_lecteur=0;
     
    	// on fait une boucle qui lit les éléments du tableau
    	foreach ($tableau as $cle=>$valeur)
    	{
      		// si l'un des éléments est lui même un tableau
    		// alors on applique la fonction à ce tableau
    		if(is_array($valeur)) 
    	  	{
    			$sauv_tableau=$tableau;
    			$sauv_cle=$cle;
    	  		// ici se réalise la récursivité
    			// c'est à dire qu'on applique la fonction
    			// à l'élément en cours car c'est lui aussi un tableau
    			parcours_tableau($valeur);
    		}
    		// si ce n'est pas un tableau
    		// alors on test le contenu de l'élément
      		else
    	  	{
    			if(($cle==="ID_bib_doc")&&($valeur==4))
    		  	{
    				$test_bib_doc=1;
    		  	}
    		    if(($cle==="valide_lecteur")&&($valeur==0))
    		  	{
    				$test_valid_lecteur=1;
    		  	}
    		}
      	}
      	if($test_bib_doc==1 && $test_valid_lecteur==1)
      	{
    	  	$retour[$sauv_tableau][$sauv_cle]=array();
      	}
    }
     
    parcours_tableau($retour);
    Voici le contenu de mon tableau $retour:
    Array (
    [1] => Array (
    )
    [2] => Array (
    [0] => Array (
    [ID_bib_doc] => 4
    [valide_lecteur] => 0
    )
    [1] => Array (
    [ID_bib_doc] => 4
    [valide_lecteur] => 1
    )
    )
    [3] => Array (
    )
    )
    En gros dans l'exemple ci-dessus, je veux supprimer le tableau:
    $retour[2][0]
    De ce fait je souhaite obtenir le tableau suivant en sortie:
    Array (
    [1] => Array (
    )
    [2] => Array (
    [1] => Array (
    [ID_bib_doc] => 4
    [valide_lecteur] => 1
    )
    )
    [3] => Array (
    )
    )
    Mon code permet bien de récupérer le tableau remplissant les deux conditions, mais je n'arrive pas à supprimer du tableau $retour le tableau concerné... Pourtant j'ai déclaré $retour en global au début de la fonction...

    Une idée?

    Merci d'avance pour vos réponses...

  2. #2
    Membre éprouvé Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 873
    Par défaut
    Bonjour.

    Essaye

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Par défaut
    J'ai trouvé une solution un peu bourrin...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    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
     
    function parcours_tableau($tableau,$niveau) 
    {
    	global $sauv_tableau,$sauv_cle,$retour,$niveau;
    	$test_bib_doc=0;
    	$test_valid_lecteur=0;
     
    	// on fait une boucle qui lit les éléments du tableau
    	foreach ($tableau as $cle=>$valeur)
    	{
      		// si l'un des éléments est lui même un tableau
    		// alors on applique la fonction à ce tableau
    		if(is_array($valeur)) 
    	  	{
    			if($niveau==0)
    			{
    				$sauv_tableau=$cle;
    			}
    			elseif($niveau==1)
    			{
    				$sauv_cle=$cle;
    			}
    	  		// ici se réalise la récursivité
    			// c'est à dire qu'on applique la fonction
    			// à l'élément en cours car c'est lui aussi un tableau
    			$niveau++;
    			parcours_tableau($valeur,$niveau);
    		}
    		// si ce n'est pas un tableau
    		// alors on test le contenu de l'élément
      		else
    	  	{
    			if(($cle==="ID_bib_doc")&&($valeur==$_SESSION['idbib']))
    		  	{
    				$test_bib_doc=1;
    		  	}
    		    if(($cle==="valide_lecteur")&&($valeur==0))
    		  	{
    				$test_valid_lecteur=1;
    		  	}
    		}
    		$niveau--;
      	}
      	if($test_bib_doc==1 && $test_valid_lecteur==1)
      	{
    		$retour[$sauv_tableau][$sauv_cle]=array();
      	}
    }
     
    parcours_tableau($retour,0);
    Parce qu'en fait mon problème était dû au fait que je ne sauvegardais pas la clé du tableau du premier niveau, mais le tableau lui même, du coup j'avais une erreur de tpe illegal offset...

    Donc j'ai ajouté la gestion des niveaux de tableaux pour pouvoir à chaque fois sauvegarder le niveau du tableau et sa cle...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. supprimer ligne d'un tableau excel
    Par zepeto dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/07/2008, 11h28
  2. [AIDE] Supprimer ligne d'un tableau
    Par Diablo_22 dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 26/10/2007, 10h52
  3. Supprimer éléments d'un tableau
    Par liline150 dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 02/09/2007, 14h51
  4. supprimer lignes/cellules de tableau vides
    Par Drozo dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/08/2006, 13h21
  5. Supprimer un élément de tableau
    Par zoidberg dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/06/2006, 16h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo