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 :

confusion sur le passage par reference


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut confusion sur le passage par reference
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $array1 = $array2 = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png');
     
    sort($array1);
    echo "Standard sorting\n";
    print_r($array1);
     
    natcasesort($array2);
    echo "\nNatural order sorting (case-insensitive)\n";
    print_r($array2);
    ?>
    L'exemple ci-dessus va afficher :
    Standard sorting
    Array
    (
    [0] => IMG0.png
    [1] => IMG3.png
    [2] => img1.png
    [3] => img10.png
    [4] => img12.png
    [5] => img2.png
    )

    Natural order sorting (case-insensitive)
    Array
    (
    [0] => IMG0.png
    [4] => img1.png
    [3] => img2.png
    [5] => IMG3.png
    [2] => img10.png
    [1] => img12.png
    )

    Je me suis aperçu que sort a agit sur le tableau sans que je lui passe le tableau $array1 par référence d'où je suis confus.

    Quelqu'un peut m'expliquer d'avantage sur le sujet ?

  2. #2
    Membre habitué Avatar de Shinji62
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 135
    Points : 150
    Points
    150
    Par défaut
    C'est un comportement naturel de la fonction :

    Regarde la definition de la fonction : bool natcasesort ( array &$array )

    natcasesort() implémente un algorithme de tri qui traite les chaînes alphanumériques du tableau array comme un être humain tout en conservant la relation clé/valeur. C'est ce qui est appelé l'"ordre naturel".

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Je me suis aperçu que sort a agit sur le tableau sans que je lui passe le tableau $array1 par référence d'où je suis confus.
    Ce n'est pas toi qui décide si tel ou tel paramètre d'une fonction propre à php passe par référence ou pas, c'est les développeur qui l'ont créés comme ça.

    En copiant sur la doc :
    bool sort ( array &array [, int sort_flags] )

    bool natcasesort ( array &array )
    Le 1er paramètre passe par référence.

    Il n'y a donc pas a être dérouté par ce comportement
    Enfin, si j'ai bien compris la question.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  4. #4
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut
    exacte mais je trouve ca quand même con, je doit apprendre ce que fait la fonction et savoir si les variables sont passé par référence...

    Merci bien c'est bien ce que j'ai demandé, il faut quand même un standard sur les fonction, passage par référence ou pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passage par reference
    Par Seth77 dans le forum Langage
    Réponses: 38
    Dernier message: 03/09/2008, 17h38
  2. [debutant(e)]passage par reference
    Par kass28 dans le forum Débuter
    Réponses: 4
    Dernier message: 27/07/2007, 17h56
  3. Probleme d'un passage par reference.
    Par mego dans le forum Langage
    Réponses: 4
    Dernier message: 19/04/2007, 16h41
  4. Probleme sur le passage par reference
    Par schnito dans le forum Langage
    Réponses: 10
    Dernier message: 02/02/2006, 16h50
  5. [VB6]Passage par référence d'une prop. d'objet à une fct
    Par -gYs- dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 02/09/2002, 08h55

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