Probleme array

Résolu
Bonjour,

c'est dans un exemple https://www.php.net/manual/en/function.sort.php

<?

$arr = array(
1 => array('name' => 'eran', 'age' => 30),
2 => array('name' => 'naama', 'age' => 29),
3 => array('name' => 'a', 'age' => 11),
4 => array('name' => 'b', 'age' => 51),
5 => array('name' => 'z', 'age' => 5),
);
foreach($arr as $key => $val) {
echo "<br> $key => (" . $val['name'] . " ," . $val['age'] . ")";
}
sortByFunc($arr,create_function('$element','return $element["age"];'));
echo "<br> now sorted:";
foreach($arr as $key => $val) {
echo "<br> $key => (" . $val['name'] . " ," . $val['age'] . ")";
}

;?>

et voici ce qui est cense sortir a l'ecran

output:
1 => (eran ,30)
2 => (naama ,29)
3 => (a ,11)
4 => (b ,51)
5 => (z ,5)
now sorted:
5 => (z ,5)
3 => (a ,11)
2 => (naama ,29)
1 => (eran ,30)
4 => (b ,51)

Premierement ca dis function inconnue sortByFunc et puis si je lui ajoutes function devant sortByFunc ca me dis ceci comme erreur
Parse error: syntax error, unexpected '(', expecting '&' or T_VARIABLE in /UNIONFS/opt/lampp/htdocs/1/nume1.php on line 13

Ou est l'erreur ? ou plutot quelle serait la solution ?

5 réponses

  1. Bonjour

    Dans l'exemple que tu cites, la fonction sortByFunc est effectivement définie un peu plus haut, ce qu'on ne voit pas dans ton code.

    Quand tu dis que tu ajoutes function devant, veux-tu dire que tu l'ajoutes simplement devant sortByFunc($arr,create_function('$element','return $element["age"];')); ? Ça, c'est sûr que c'est incorrect.
    1. Bonjour le père

      Effectivement si j'ajoutes function devant sortByFunc($arr,create_function('$element','return $element["age"];'));
      alors ca me dis
      1 => (eran ,30)
      2 => (naama ,29)
      3 => (a ,11)
      4 => (b ,51)
      5 => (z ,5)
      Fatal error: Call to undefined function sortByFunc() in /UNIONFS/opt/lampp/htdocs/1/nume0.php on line 13
      Parse error: syntax error, unexpected '(', expecting '&' or T_VARIABLE in /UNIONFS/opt/lampp/htdocs/1/nume0.php on line 13

      et si je ne rajoutes pas function devant
      sortByFunc($arr,create_function('$element','return $element["age"];'));
      ca me dis
      Parse error: syntax error, unexpected '(', expecting '&' or T_VARIABLE in /UNIONFS/opt/lampp/htdocs/1/nume0.php on line 13

      donc ca serait une erreur de syntaxe ou bien mauvase organisation du code .
      1. Tout ceci est parfaitement normal.
        Tu utilises une fonction sans l'avoir définie.
        Et il ne suffit pas de jeter le mot 'function' au hasard au milieu d'un script (car ça n'a aucun sens là où tu essayes de le mettre) pour définir une fonction.

        Prends le temps de lire complètement l'exemple sur lequel tu te bases et ma première réponse : il y a l'explication.
        1. Effectivement merci le père

          Ce que je croyais etre la function ne l'etait pas

          La function se trouver plus haut mais pas reprise dans l'exemple

          Que veut tu on apprend chaque jour un peu plus

          Voici la function a rajouter a l'exemple pour que cela fonctionne

          function sortByFunc(&$arr, $func) {
          $tmpArr = array();
          foreach ($arr as $k => &$e) {
          $tmpArr[] = array('f' => $func($e), 'k' => $k, 'e' =>&$e);
          }
          sort($tmpArr);
          $arr = array();
          foreach($tmpArr as &$fke) {
          $arr[$fke['k']] = &$fke['e'];
          }
          }

          Un grand merci encore pour ton aide
          1. De rien : )

            Bonne continuation