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 :

[Arrayobject] reverse ne fonctionne pas


Sujet :

Langage PHP

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut [Arrayobject] reverse ne fonctionne pas
    Hello,

    J'ai une méthode de classe qui foncitonne pas comme je le veux et je ne vois pas pourquoi.

    Donc je cherche un peu d'aide.
    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
     
    <?
    class ArrayObjectPlus extends ArrayObject{
    	public function __construct(){
    		parent::__construct();
    	}
     
    	public function reverse( $preserve_key = true ){
    		$temp = $this->getArrayCopy( );
    		array_reverse ( $temp , $preserve_key );
     
    		$this->exchangeArray( $temp );
    	}
    }
    ?>
    La méthode reverse devrait m'inverser l'ordre des éléments du tableaux.... Devrait.
    Actuellement elle semble ne pas faire effet du tout.

    Merci,
    a plus

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Points : 79
    Points
    79
    Par défaut
    Peut tu nous montrer le script qui utilise la classe et les methodes de la classe parent ?

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    La classe Parent ? -> http://www.php.net/~helly/php/ext/sp...rayObject.html

    C'est une classe standard.

    Et le script qui l'utilises.
    Ben en voici un.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $tab = null;
     
    $tab = new ArrayObjectPlus();
     
    $tab->append( 3 );
    $tab->append( 2 );
    $tab->append( 1 );
     
    echo "<pre>";var_dump($tab);echo "</pre>";
    $tab->reverse();
    echo "<hr/>";
    echo "<pre>";var_dump($tab);echo "</pre>";
    bye

  4. #4
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Points : 79
    Points
    79
    Par défaut
    Oui pardon j'avais pas regardé j'ai juste vu extends et parent:: donc je n'ai mem pas lu la declaration ...

    Tiens essaie ce code qui te montre un détail que j'ai découvert aussi :

    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
     
    <?php
     
    	class ArrayObjectPlus extends ArrayObject
    	{
    		public $array_final ;
     
    		public function __construct()
    		{
    			parent::__construct();
    		}
     
    		public function reverse( $preserve_key = true )
    		{
    			$temp = $this->getArrayCopy( );
    			$this->array_final =  array_reverse ( $temp  );
    			$this->exchangeArray( $temp );
     
     
    		}
    	}
     
     
    	$tab = null;
     
    	$tab = new ArrayObjectPlus();
     
    	$tab->append( 3 );
    	$tab->append( 2 );
    	$tab->append( 1 );
     
    	echo "<pre>";var_dump($tab);echo "</pre>";
    	$tab->reverse();
    	echo "<hr/>";
    	echo "<pre>";var_dump($tab);echo "</pre>";
    	echo "<hr/>";
    	echo "<pre>";var_dump($tab->array_final);echo "</pre>";
    ?>
    Je crois que la méthode exchangeArray c'est pour re-affecter la valeur du $this, j'ai mis une variable intermediaire car array_reverse retourne une nouvelle valeur.
    donc array_reverse fonctionne bien, a toi de voir pour la remettre dans ton objet ArrayObjectPlus .

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    hmm
    OK. Je vais faire des tests, plus tard.
    Pour exchangeArray, en effet le but avoué de cette méthode est de repeupler le tableau interne à l'objet. Mais là sa ne fonctionne pas comme je l'entends..

    Merci,
    aplus

  6. #6
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Bonjour,

    voir http://php.net/array_reverse :
    Prend le tableau array et retourne un nouveau tableau qui contient les mêmes éléments mais dans l'ordre inverse.
    Donc :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class ArrayObjectPlus extends ArrayObject{
    	public function reverse( $preserve_key = true ){
    		$temp = $this->getArrayCopy( );
    		$temp = array_reverse ( $temp , $preserve_key );
    		$this->exchangeArray( $temp );
    	}
    }

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    J'ai du lire la doc de travers.

    Merci

    a plus

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

Discussions similaires

  1. Reverse Engineer : ne fonctionne pas !
    Par pespie dans le forum NetBeans
    Réponses: 8
    Dernier message: 09/05/2007, 20h13
  2. Réponses: 6
    Dernier message: 27/01/2004, 12h14
  3. UNION qui ne fonctionne pas
    Par r-zo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/07/2003, 11h04
  4. Un Hint sur un PopupMenu ne fonctionne pas !!??
    Par momox dans le forum C++Builder
    Réponses: 6
    Dernier message: 26/05/2003, 17h48
  5. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 01h10

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