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 :

Suppression d'une valeur d'un tableau d'objets


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Par défaut Suppression d'une valeur d'un tableau d'objets
    Bonjour a tous,

    Dans mon projet j'ai besoin de supprimer un enregistrement d'un tableau d'objet alors j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public function deleteNode($nodename){
    		if($this->initialized){
    			for($i=0;$i<sizeof($this->myxmlnodes);$i++){
    				if($this->myxmlnodes[$i]->isMe($nodename)){
    					unset($this->myxmlnodes[$i]);
    					$this->myxmlnodes = array_values($this->myxmlnodes);
    					}
    				}
    			}
    		}
    Mais cette fonction ne marche pas ? alors y a t'il une erreur dans mon code?

    Merci

  2. #2
    Membre chevronné
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Par défaut
    le unset suffit

    si le code suivant ne marche pas, alors l'erreur vient de ta fonction isMe (que j'aimerais voir) :
    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
     
    public function deleteNode($node)
    {
        if (!$this->initialized)
            return;
     
        $nbNodes = count($this->myxmlnodes);
        for ($i = 0; $i < $nbNodes; $i++)
        {
            if ($this->myxmlnodes[$i]->isMe($node))
            {
                unset($this->myxmlnodes[$i]);
            }
        }
    }

  3. #3
    Membre éclairé Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Par défaut
    merci pour la réponse, après des tests j'ai remarquer que la taille du tableau a effectivement diminuer quand je supprime un nœud mais ce qui ne marche pas c'est le parcours du tableau après suppression en utilisant foreach :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $xml = new MyXML('system/os/desktop/xml/deskmenu.xml');
    $vect = $xml->getObjectsNodesVector();
    $xml->deleteNode('Applications');
    echo '<br>'. $xml->getObjectsNodesVectorsize();
    foreach($vect as $objnode){
        echo $objnode->formatMe();
        echo $objnode->getIsActive();
        echo $objnode->getParentNode();
        echo $objnode->getIsSection();
    }
    ce code m'affiche, sachant que mon tableau contient 14 enregistrement au dépars :

    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
     
    13
    <Applications section ="true" ></Applications>1menu1
    <Programing section ="true" ></Programing>1Applications1
    <PHPEditor section ="false" ddd ="sdsd" ></PHPEditor>1Programing
    <Graphic section ="true" ></Graphic>1Applications1
    <MyPhoto section ="false" ></MyPhoto>1Graphic
    <Multimedia section ="true" ></Multimedia>1Applications1
    <MyPlayer section ="false" ></MyPlayer>1Multimedia
    <Games section ="true" ></Games>1Applications1
    <Tetris section ="false" ></Tetris>1Games
    <System section ="true" ></System>1menu1
    <ControllPanel section ="false" ></ControllPanel>1System
    <Descktop section ="false" ></Descktop>1System
    <Exit section ="true" ></Exit>1menu1
    est ce que l'erreur vien du foreach?

    IE : merci pour les modif mais isMe fonctionne correctement voila sont code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public function isMe($nodename){
    	if($this->nodename == $nodename){
    		return true;
    	}else{
    		return false;
    	}
    }
    c'est une fonction de la classe a partir de la quelle je rempli le tableau

  4. #4
    Membre éclairé Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Par défaut
    Ah oui, ca marche merci pour l'aide en fait c'est bête mais j'avais un echo qui m'affiche le formatme de l'enregistrement N°0 et comme par hasard l'élément que j'ai supprimer c'est l'élément N°0!!!!


    Merci pour l'aide

  5. #5
    Membre chevronné
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public function isMe($nodename){
        if($this->nodename == $nodename){
            return true;
        }else{
            return false;
        }
    }
    malheureux ! jamais deux return dans une fonction :p
    et quand tu peux préciser le type d'un paramètre, fais-le.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public function isMe(string $nodename)
    {
        return $this->nodename === $nodename;
    }

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

Discussions similaires

  1. Suppression d'une ligne d'un tableau à partir d'une valeur de cellule
    Par jerem1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/12/2010, 14h15
  2. Suppression d'une ligne d'un tableau
    Par ratapapa dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/03/2006, 09h35
  3. Accéder à une valeur d'un tableau associatif
    Par TigreRouge dans le forum Langage
    Réponses: 5
    Dernier message: 16/03/2006, 12h03
  4. Réponses: 21
    Dernier message: 28/02/2006, 15h23
  5. [vb/excel] suppression d'une colonne d'un tableau
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/10/2005, 10h17

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