Probleme array

Résolu/Fermé
graffer Messages postés 35 Date d'inscription samedi 17 août 2013 Statut Membre Dernière intervention 13 décembre 2013 - Modifié par graffer le 7/10/2013 à 14:32
 Utilisateur anonyme - 7 oct. 2013 à 14:58
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

Utilisateur anonyme
7 oct. 2013 à 14:15
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
graffer Messages postés 35 Date d'inscription samedi 17 août 2013 Statut Membre Dernière intervention 13 décembre 2013 1
Modifié par graffer le 7/10/2013 à 14:46
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
Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023 7 325
7 oct. 2013 à 14:35
0
Utilisateur anonyme
7 oct. 2013 à 14:42
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
graffer Messages postés 35 Date d'inscription samedi 17 août 2013 Statut Membre Dernière intervention 13 décembre 2013 1
7 oct. 2013 à 14:57
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
Utilisateur anonyme
7 oct. 2013 à 14:58
De rien : )

Bonne continuation
0