Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/09/2008, 14h29   #1
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
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 :
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
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2008, 14h33   #2
Membre du Club
 
Développeur informatique
Inscription : février 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2007
Messages : 70
Points : 61
Points : 61
Envoyer un message via MSN à f.lam
Peut tu nous montrer le script qui utilise la classe et les methodes de la classe parent ?
f.lam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2008, 15h08   #3
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
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 :
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
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2008, 15h48   #4
Membre du Club
 
Développeur informatique
Inscription : février 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2007
Messages : 70
Points : 61
Points : 61
Envoyer un message via MSN à f.lam
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 :
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 .
f.lam est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2008, 15h52   #5
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
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
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 17h29   #6
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Bonjour,

voir http://php.net/array_reverse :
Citation:
Prend le tableau array et retourne un nouveau tableau qui contient les mêmes éléments mais dans l'ordre inverse.
Donc :
Code php :
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 );
	}
}
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2008, 11h42   #7
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
J'ai du lire la doc de travers.

Merci

a plus
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h29.


 
 
 
 
Partenaires

Hébergement Web