manipulation d'un array

Petit nouveau ! | 6 Messages

18 déc. 2010, 02:37

Bonjour,
je rencontre un soucis de manipulation d'array.
Le code qui fonctionne :
$aCmp = $a['elv_date'];
Le code qui ne fonctionne pas :
$sort = 'elv_date';
$aCmp = $a[$sort];
Quelqu'un a-t'il une idée ?
merci.
Modifié en dernier par b3f3 le 18 déc. 2010, 03:31, modifié 1 fois.

devlop78
Invité n'ayant pas de compte PHPfrance

18 déc. 2010, 03:10

Peux-tu faire un var_dump() de chaque variable et afficher le résultat ici, s'il te plait ?

Petit nouveau ! | 6 Messages

18 déc. 2010, 03:22

Peux-tu faire un var_dump() de chaque variable et afficher le résultat ici, s'il te plait ?
Ca n'est pas vraiment possible car ce code est à l'intérieur d'une fonction. Cette fonction me sert à trier un array. Elle est utilisée avec usort.
Comme ceci :
function cmp($a, $b) {
   $aCmp = $a[elv_date];
   $bCmp = $b[elv_date];
   if ($aCmp == $bCmp) {
      return 0;
   }
   return ($aCmp > $bCmp) ? +1 : -1;
}
usort($arrayRemovals, "cmp");
Dans l'état actuel, elle fonctionne. Mon array est bien trié.
Mais si je déclare $sort = 'elv_date'; et que je remplace les 'elv_date' par $sort, l'array n'est pas trié mais mélangé d'une manière qui parait aléatoire.
Modifié en dernier par b3f3 le 18 déc. 2010, 03:31, modifié 1 fois.

Petit nouveau ! | 6 Messages

18 déc. 2010, 03:26

Je viens de comprendre... ma variable $sort n'est pas globale...

Petit nouveau ! | 6 Messages

18 déc. 2010, 03:30

Voici la solution :
$sort='elv_date';
function cmp($a, $b) {
   global $sort;
   $aCmp = $a[$sort];
   $bCmp = $b[$sort];
   if ($aCmp == $bCmp) {
      return 0;
   }
   return ($aCmp > $bCmp) ? +1 : -1;
}
usort($arrayRemovals, "cmp");
Merci devlop78 de t'être intéressé à mon problème.

devlop78
Invité n'ayant pas de compte PHPfrance

18 déc. 2010, 13:49

De rien :p