Probleme array

Résolu
graffer Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
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. Utilisateur anonyme
     
    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.
    0
  2. graffer Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   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 .
    0
  3. Utilisateur anonyme
     
    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.
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. graffer Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   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
    0
    1. Utilisateur anonyme
       
      De rien : )

      Bonne continuation
      0