Videos streaming images jeux et buzz
Connexion






Perdu le mot de passe ?

Inscrivez-vous maintenant !
Menu Principal
Communauté

 Bas   Précédent   Suivant  Le sujet est verrouillé



Wiliwilliam
[Résolvu] exercice PHP - Trier et afficher des valeurs
 0  #1
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37195
Karma: 17456
Encore moi 😃 pour une question sur le PHP pour changer :roll:

Alors je vous explique:
j'ai disons ... 5 personnes avec 5 valeurs attribuées.
$personne1= "Martin";
$valeur1= 50

$personne2= "Didier";
$valeur2=30;

$personne3= "Gertrude";
$valeur3=10;

$personne4= "Jean-phil";
$valeur4=20;

$personne5= "Françoise";
$valeur5=40;


Actuellement ce que je sais faire comme sortie c'est ça:

echo '
'.personne1.' ayant comme valeur '.valeur1.'
'.personne2.' ayant comme valeur '.valeur2.'
'.personne3.' ayant comme valeur '.valeur3.'
'.personne4.' ayant comme valeur '.valeur4.'
'.personne5.' ayant comme valeur '.valeur5.'
voilà ';


Or, le problème est que l'affichage ne classe pas les personnes en fonction des valeurs.
j'aimerais savoir si uniquement en php sans base de donnée, à partir des $personnes et $valeur on peut réussir à classer automatiquement les gens avec leur valeur dans l'affichage echo. pour qu'en sortie texte on est:

Martin ayant comme valeur 50
Françoise ayant comme valeur 40
Didier ayant comme valeur 30
Jean-phil ayant comme valeur 20
Gertrude ayant comme valeur 10


Voilà, j'espère que ma demande est clair! 🙂

( @Adr1enb @-Flo- qui sont généralement plutôt efficace pour m'aider, attardé comme je suis :-D)

NB: j'ai cherché sur internet, j'ai trouvé des choses parlant de array() et de key, mais j'ai rien compris et j'ai pas trouvé comment Trier et exploiter le tableau.

Contribution le : 08/05/2015 00:29

Edité par Wiliwilliam_ sur 14/5/2015 11:19:27
Signaler

Wiliwilliam
 0  #2
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37195
Karma: 17456
j'ai testé avec ça:

<?php
$tri = array($personne1 => $valeur1, $personne2 => $valeur2, $personne3 => $valeur3, $personne4 => $valeur4, $personne5 => $valeur5);
$TriArrayObject = new ArrayObject($tri);
$TriArrayObject->ksort();
//ksort pour que ce soit dans l'ordre décroissant
foreach ($TriArrayObject as $key => $val) {
	echo "$key = $val </br>";
}


ça me sort
Martin = 50
Françoise = 40
Didier = 30
Jean-phil = 20
Gertrude = 10

Bon mais du coup moi j'aimerais faire des phrases personnalisée pour le premier et le dernier. genre comme ça:

Martin = 50 Mais quel champion!
Françoise = 40
Didier = 30
Jean-phil = 20
Et notre looser est Gertrude = 10

Comment j'interviens?

Contribution le : 08/05/2015 01:15

Edité par Wiliwilliam_ sur 8/5/2015 11:33:44
Edité par Wiliwilliam_ sur 8/5/2015 11:46:07
Signaler

Invité
 0  #3
FantômeInvité
Je n'ai plus aucune idée des noms des fonctions, par contre je verrais bien deux exceptions de cette manière dans ton foreach :

if premier élément de ton array (je crois que ça donnerait $fruitArrayObject[0] quelque chose dans le genre, à vérifier) -> tu mets ton echo de valeurs suivi de ton "mais quel champion"
else if dernier élément de ton array (y'a une fonction pour donner la taille d'un array, tu fais juste un comparatif pour savoir si l'élément sur lequel tu es correspond à cette taille maximale) -> tu mets donc ton echo de valeurs précédé de ton "looser"
else -> ton affichage de valeurs classique

J'crois que c'est légèrement porkass, mais mes quelques souvenirs de développement donneront que ça 😃

Contribution le : 08/05/2015 08:18
Signaler

Wiliwilliam
 0  #4
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37195
Karma: 17456
Un peu ouai 😃

J'ai testé mais j'ai du faire des erreurs de. Syntaxe ça marche pas

Contribution le : 08/05/2015 08:38
_________________
Signaler

Invité
 0  #5
FantômeInvité
Ou sinon tu tapes une itération, quelque chose de bien sale 😃

$i = 0;
foreach ($fruitArrayObject as $key => $val) {
if ($i = 0)
echo "$key = $val mais quel champion</br>";
else if ($i = count($fruitArrayObject))
echo "et notre looser est $key = $val </br>";
else
echo "$key = $val </br>";
$i++;
}

Si ce truc moche fonctionne pas, c'est que j'ai définitivement perdu tout skill de développement 😃

Contribution le : 08/05/2015 09:00
Signaler

Wiliwilliam
 0  #6
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37195
Karma: 17456
bon en fait c'est de la merde le Ksort() et compagnie. y en a aucun qui veut faire le classement décroissant, ni sort() arsort() ni krsort() ne fonctionne, ça me renvoie rien....

Contribution le : 08/05/2015 12:05
Signaler

Invité
 0  #7
FantômeInvité
Citation :

@Wiliwilliam_ a écrit:
bon en fait c'est de la merde le Ksort() et compagnie. y en a aucun qui veut faire le classement décroissant, ni sort() arsort() ni krsort() ne fonctionne, ça me renvoie rien....


Juste une question, pourquoi tu déclares un nouvel array avant le krsort() ?

Fais juste appel à krsort($tri) pour trier en décroissant ton tableau sans le stocker dans un autre.

Après tu veux trier d'abord la valeur numérique et pas le nom. Pour faire plus simple mets en key ton chiffre et en value le prénom et inverses les dans ton echo de sortie.

Contribution le : 08/05/2015 12:33
Signaler

AshySlashy
 0  #8
J'aime glander ici
Inscrit: 05/04/2007 11:48
Post(s): 8182
Karma: 1334
ksort marche, mais ça va te trier par ordre alphabétique des prénoms 😉

Faut utiliser asort à la place pour trier selon les valeurs, et arsort pour trier de façon décroissante.
Et pas besoin de transformer en objet.

Essaie ça à la place:

<?php
$personne1= "Martin";
$valeur1= 50;

$personne2= "Didier";
$valeur2=30;

$personne3= "Gertrude";
$valeur3=10;

$personne4= "Jean-phil";
$valeur4=20;

$personne5= "Françoise";
$valeur5=40;

$titres = array(1 => "T'es un champion", 2 => "C'est bien quand même", 3 => "C'est pas trop mal", 4 => "C'est pas terrible", 5 => "Looser!");
$resultats = array($personne1 => $valeur1, $personne2 => $valeur2, $personne3 => $valeur3, $personne4 => $valeur4, $personne5 => $valeur5);
arsort($resultats);
$index = 1;
foreach ($resultats as $key => $val) {
	echo "$key = $val, $titres[$index]<br/>\n";
	if ($index < count($titres)) $index++;
}
?>

Contribution le : 14/05/2015 10:24
Signaler

Wiliwilliam
 0  #9
La loi c'est moi
Inscrit: 07/04/2012 19:19
Post(s): 37195
Karma: 17456
C'est bon en fait j'avais déjà réglé le soucis 😃 et l'ordre décroissant n'était plus nécessaire 🙂

Merci d'avoir pris le temps de répondre 😉

Contribution le : 14/05/2015 11:19
_________________
Signaler


 Haut   Précédent   Suivant

 Le sujet est verrouillé 





Si vous êtes l'auteur d'un élément de ce site, vous pouvez si vous le souhaitez, le modifier ou le supprimer
Merci de me contacter par mail. Déclaré à la CNIL N°1031721.