Tri d'un tableau d'objet

Eléphanteau du PHP | 12 Messages

27 sept. 2011, 00:14

Bonjour,

Je cherche à faire une opération très simple, sans y parvenir.
J'ai un tableau d'objet que je souhaite trier. Bien sur, lorsque je trie mon tableau avec un "sort", "asort" ou autre, ça ne fonctionne pas (c'est surement normal), mais du coup, je ne sais pas comment les trier.

voici par exemple, dans quel ordre sont lues les fichies depuis mon xml :

Code : Tout sélectionner

0: -127 Heures- 1: -2 Fast 2 Furious- 2: -2012- 3: -300- 4: -A la recherche du bonheur- 5: -Alice au Pays des Merveilles- 6: -Alien- 7: -Alien vs Predator- 8: -Le Fabuleux Destin D'Amelie Poulain- 9: -Armageddon- 10: -Astérix aux jeux olympiques-
et voici ensuite :

Code : Tout sélectionner

0: -Star Wars II: L'Attaque Des Clones- 1: -Ocean's Eleven- 2: -2 Fast 2 Furious- 3: -World Trade Center- 4: -2012- 5: -Resident Evil : Extinction- 6: -300- 7: -The Rite- 8: -A la recherche du bonheur- 9: -Matrix reloaded- 10: -Alice au Pays des Merveilles- 11: -Prêtre-
et voici le code :

Code : Tout sélectionner

for($i=0;$i<$n;$i++) { echo $i . ": -" .$arrayObject[$i]."-<br/>"; } sort($arrayObject); echo "<hr>"; for($i=0;$i<$n;$i++) { echo $i . ": -" .$arrayObject[$i]."-<br/>"; }
Comment faire donc, pour trier mon tableau d'objet sur une variable de chaque objet plutôt que dans un ordre chaotique ?

Cordialement,
Jean-Michel

Eléphanteau du PHP | 12 Messages

27 sept. 2011, 00:16

D'ailleur, ce n'est pas vraiment un tableau d'objet, mais un tableau classique, puisque dans ce tableau j'y met le nom d'un titre qui provient de l'objet et non l'objet lui même :

Code : Tout sélectionner

$arrayObject[]=$currentMovie->getTitle();

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 sept. 2011, 00:33

salut,

c'est pas du tout claire ton affaire.

c'est quoi exactement ton soucis, qu'est ce que tu veux au final ?
pour nous aider que donne un var_dump( $arrayObject); ?

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 12 Messages

27 sept. 2011, 00:44

Oublie le début du message, pas très clair en effet...
Je souhaite déjà pouvoir trier le tableau $arrayObject, ensuite j'essaierai de me débrouiller un peu.

le var_dump donne ça avant trie :

Code : Tout sélectionner

array 0 => object(SimpleXMLElement)[6] string '127 Heures' (length=10) 1 => object(SimpleXMLElement)[15] string '2 Fast 2 Furious' (length=16) 2 => object(SimpleXMLElement)[5] string '2012' (length=4) 3 => object(SimpleXMLElement)[4] string '300' (length=3) 4 => object(SimpleXMLElement)[14] string 'A La Recherche du Bonheur' (length=25) 5 => object(SimpleXMLElement)[7] string 'Alice au pays des merveilles' (length=28) 6 => object(SimpleXMLElement)[16] string 'Alien' (length=5) 7 => object(SimpleXMLElement)[11] string 'Alien vs Predator' (length=17) 8 => object(SimpleXMLElement)[13] string 'Le Fabuleux Destin D'Amelie Poulain' (length=35) 9 => object(SimpleXMLElement)[19] string 'Armageddon' (length=10) 10 => object(SimpleXMLElement)[20] string 'Astérix aux jeux olympiques' (length=28)
et après tri :

Code : Tout sélectionner

array 0 => object(SimpleXMLElement)[265] string 'Star Wars II: L'Attaque Des Clones' (length=34) 1 => object(SimpleXMLElement)[197] string 'Ocean's Eleven' (length=14) 2 => object(SimpleXMLElement)[15] string '2 Fast 2 Furious' (length=16) 3 => object(SimpleXMLElement)[328] string 'World Trade Center' (length=18) 4 => object(SimpleXMLElement)[5] string '2012' (length=4) 5 => object(SimpleXMLElement)[229] string 'Resident Evil : Extinction' (length=26) 6 => object(SimpleXMLElement)[4] string '300' (length=3) 7 => object(SimpleXMLElement)[297] string 'The Rite' (length=8) 8 => object(SimpleXMLElement)[14] string 'A La Recherche du Bonheur' (length=25) 9 => object(SimpleXMLElement)[185] string 'Matrix reloaded' (length=15)
voici le code.

Code : Tout sélectionner

var_dump( $arrayObject); for($i=0;$i<$n;$i++) { // echo $i . ": -" .$arrayObject[$i]."-<br/>"; } sort($arrayObject); echo "<hr>"; var_dump( $arrayObject); for($i=0;$i<$n;$i++) { // echo $i . ": -" .$arrayObject[$i]."-<br/>"; }

ViPHP
AB
ViPHP | 5818 Messages

27 sept. 2011, 17:38

Oui bon le plus simple c'est de nous donner un petit extrait du tableau que tu as et surtout un exemple du résultat que tu souhaites.

Eléphanteau du PHP | 12 Messages

27 sept. 2011, 23:15

Bonsoir,
Merci de prendre un peu de temps pour moi ;)

Ben à la base c'est un XML de mymovies, ce n'est pas classé par ordre alpha mais chrono, le xml c'est du genre :

<films>
<film>
<title></title>
<year></year>
</film>
</films>

et donc, je récup chaque film, j'ai fait une occurence, et je veux ensuite pouvoir les afficher dans l'ordre


Jean-Michel

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 sept. 2011, 23:38

Peux être peux tu adapter cette contribution à ton problème pour réaliser les tris comme tu le souhaite ?

parce que coté trie, hormis créer une fonction de classement perso je ne vois pas

@+
Il en faut peu pour être heureux ......