Page 1 sur 1

un problème avec la fonction sort et foreach

Posté : 07 juil. 2011, 12:50
par krapoulos2011
Bonjour,

D'avance merci pour votre aide.
Je veux trier 2 tableaux diffèrents (le tableau valeur et le tableau chx).
Voilà mon petit bout de code.
<?
$valeur = array();
$valeur[0]=8.5;
$valeur[1]=3.5;
$valeur[2]=5;
$valeur[3]=2;

$chx[0]=4;
$chx[1]=2;
$chx[2]=1;
$chx[3]=3;

sort($valeur);

foreach ($valeur as $key => $val) 
{
	foreach ($chx as $key => $num) 
              {
              echo 'le chx '.$num.' a une  valeur de  '.$val.' <br/>';
	}
}
?>
Mon problème est que normalement le classement du tableau valeur avec les donnees du tableau chx doit être comme cela :

le chx 3 a une valeur de 2
le chx 2 a une valeur de 3.5
le chx 1 a une valeur de 5
le chx 4 a une valeur de 8.5

mais j'obtiens cela :shock: :shock:

le chx 4 a une valeur de 2
le chx 2 a une valeur de 2
le chx 1 a une valeur de 2
le chx 3 a une valeur de 2
le chx 4 a une valeur de 3.5
le chx 2 a une valeur de 3.5
le chx 1 a une valeur de 3.5
le chx 3 a une valeur de 3.5
le chx 4 a une valeur de 5
le chx 2 a une valeur de 5
le chx 1 a une valeur de 5
le chx 3 a une valeur de 5
le chx 4 a une valeur de 8.5
le chx 2 a une valeur de 8.5
le chx 1 a une valeur de 8.5
le chx 3 a une valeur de 8.5

Merci pour votre aide (precieuse).

Re: un problème avec la fonction sort et foreach

Posté : 07 juil. 2011, 12:58
par Ryle
C'est parce que tu as deux boucles imbriquées... la première parcours les 4 premiers éléments de ton tableau, et pour chaque élément, la seconde parcours les 4 éléments du 2nd tableau. Tu te retrouves donc avec 16 lignes au lieu de 4 :)

Si ton besoin est simplement de rapprocher les deux valeurs parce qu'elles ont le même index, tu n'as pas besoin d'une seconde boucle, il te suffit simplement d’interroger ton tableau en lui précisant l'index recherché :
foreach ($valeur as $key => $val) // pour chaque couple clé / valeur du tableau $valeur
{
    // on affiche la valeur associée à la clé dans le tableau $chx, et la valeur que l'on récupère dans le foreach
    echo 'le chx ' . $chx[$key] . ' a une  valeur de  ' . $val . ' <br/>';
}

Re: un problème avec la fonction sort et foreach

Posté : 07 juil. 2011, 14:04
par krapoulos2011
Cela ne fonctionne pas

Je veux un classement dnas le tableau $valeur par ordre croissant.
Une fois trouvé la plus petite valeure (ici dans l'exemple $valeur[3] avec pour donnée 2). je l'associe au tableau chx (toujours dans l'exemple $chx[3] =3;
Ce qui nous donne

le choix 3 à une valeur de 2 et ainsi de suite
et une fois le tableau trié j'obtiens ...

$valeur[3]=2 -> $chx[3]=3
$valeur[1]=3.5 -> $chx[1]=2
$valeur[2]=5 -> $chx[2]=1
$valeur[0]=8.5 -> $chx[0]=4

Juste pour info je recois des données sur 2 tableaux et je veux associé les 2 valeurs pour une même clé avec un classement par odre croissant sur le tableau valeur.

Merci pour votre aide

Re: un problème avec la fonction sort et foreach

Posté : 07 juil. 2011, 14:11
par Ryle
Et si tu tries avec asort() ?

Re: un problème avec la fonction sort et foreach

Posté : 07 juil. 2011, 14:16
par krapoulos2011
8-|

Humm !!!!
Comment dire -> Tout simplement merci t un king.
Juste pour la petite histoire cela fait 4 heures que je suis dessus.
:shock: :shock:

Encore merci

Re: un problème avec la fonction sort et foreach

Posté : 07 juil. 2011, 14:19
par Berzemus
8-|

Humm !!!!
Comment dire -> Tout simplement merci t un king.
Juste pour la petite histoire cela fait 4 heures que je suis dessus.
:shock: :shock:

Encore merci
Lire la documentation aurais peut-être servi..
http://be.php.net/manual/fr/function.sort.php

:roll:

[Résolu] un problème avec la fonction sort et foreach

Posté : 07 juil. 2011, 14:52
par krapoulos2011
Merci encore