IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Problème avec array_multisort


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 35
    Points : 32
    Points
    32
    Par défaut [Tableaux] Problème avec array_multisort
    J'ai un problème avec array_multisort.

    Je l'appelle dans une fonction.

    Si je fais l'appel suivant :

    array_multisort ($tab1, $tab2)

    les variables $tab1 et $tab2 ne sont pas modifiées.

    Si je fais l'appel suivant :

    array_multisort (&$tab1, &$tab2)

    les variables $tab1 et $tab2 sont modifiées.
    Cependant, dans ce cas, j'ai le message d'avertissement suivant :

    Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of array_multisort(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in [MONURL]

    Or, je ne sais pas modifierla déclaration de array_multisort, puisqu'il s'agit d'une fonction PHP.

    Comment rendre mon code conforme aux dernières versions de PHP ?

    Merci pour votre aide !

  2. #2
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    On ne passe par référence un argument a une variable, c'est a dire que faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array_multisort(&$ary);
    n'est pas a la norme et est déprécié.

    Lit ca : http://fr2.php.net/manual/fr/function.array-multisort.php

    Normalement ca fonctionne tout seul, ca modifie tes tableaux ... si ca ne le fait pas c'est qu'ils sont peut etre déjà triés ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 35
    Points : 32
    Points
    32
    Par défaut
    Non, ils ne sont pas triés et sans le & ça ne marche pas... Je n'avais d'abord pas mis de &, car je n'en ai jamais eu besoin.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 35
    Points : 32
    Points
    32
    Par défaut
    J'ai déjà lu le manuel et ça me fait penser à ce bug :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If you're having problems with array_multisort changing variables in global space when it is called inside a function and you're not passing in the function parameters by reference you can alleviate the problem by calling array_multisort with its parameters by reference.
     
    array_multisort(&$a, SORT_DESC, &$b);
     
    More details here in my bug report:
    http://www.php.net/bugs.php?id=12936

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 35
    Points : 32
    Points
    32
    Par défaut Résolu mais bof
    En fait, si je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $tab11 = $tab1;
    $tab22 = $tab2;
    array_multisort ($tab11, $tab22);
    $tab1 = $tab11;
    $tab2 = $tab22;
    là, ça marche...

    Bizarre, non ?

  6. #6
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Oui

    Encore un des mystères de PHP ^^

Discussions similaires

  1. [Tableaux] Problème avec boucle
    Par MYster dans le forum Langage
    Réponses: 6
    Dernier message: 11/11/2005, 18h39
  2. [Tableaux] Problème avec utf8_encode()
    Par RapidJul dans le forum Langage
    Réponses: 1
    Dernier message: 12/10/2005, 18h22
  3. [Tableaux] Problème avec les boucles
    Par speed_man002 dans le forum Langage
    Réponses: 4
    Dernier message: 21/09/2005, 15h42
  4. [Tableaux] problème avec while
    Par zimotep dans le forum Langage
    Réponses: 3
    Dernier message: 11/09/2005, 10h30
  5. [Tableaux] Problème avec Switch case
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 07/09/2005, 16h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo