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 :

Accéder directement à un tableau retourné par une fonction


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Points : 43
    Points
    43
    Par défaut Accéder directement à un tableau retourné par une fonction
    Bonjour,

    Je pense ne pas être le seul à m'être posé cette question. J'ai essayé pas mal de choses pour obtenir ce que je souhaite mais sans résultat.

    Comment accéder directement à l'indice d'un tableau retourné par une fonction sans passer par une variable intermédiaire. C'est à dire :

    soit la fonction foo() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function foo() {
        return array('lorem', 'ipsum', 'dolor');
    }
    Comment accéder directement à une des valeurs du tableau qu'elle retourne sans passer par une variable intermédiaire (comme dans l'exemple suivant) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $tmp = foo();
    echo $tmp[0];
    J'ai essayé les choses suivantes :

    Mais rien ...

    J'imagine que dans ce cas, cela doit être impossible de fonctionner ainsi. Mais alors si cela est impossible pourquoi ? Quelle en est la raison ?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 423
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 423
    Points : 15 793
    Points
    15 793
    Par défaut
    tu peux passer l'indice en argument
    comme ça par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function foo($indice) {
        $tab = array('lorem', 'ipsum', 'dolor');
     
        return $tab[$indice];
    }
     
    echo foo(0);

  3. #3
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Points : 43
    Points
    43
    Par défaut
    J'avais pensé à ce genre de solutions.
    J'ai même pensé à utilisé une fonction annexe. Du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function read_array($array, $k) {
        return $array[$k];    
    }
     
    echo read_array(foo(), 0);
    Mais en fait, mon interrogation ne se pose pas tellement sur la résolution d'un aspect "métier" de mon code. C'est plus général.
    Vu que le langage propose des raccourcis fort intéressant ; comme par exemple la possibilité d'écrire au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array_push($array, 'foo')
    propose il aussi un raccourcis pour le cas que je donne ?
    Et si ce n'est pas le cas, quelles en sont les raisons ?

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 423
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 423
    Points : 15 793
    Points
    15 793
    Par défaut
    Citation Envoyé par Méthylbro Voir le message
    Et si ce n'est pas le cas, quelles en sont les raisons ?
    pour cette question, il faudrait mieux la demander aux développeurs de PHP : http://php.net/

  5. #5
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Points : 43
    Points
    43
    Par défaut
    On viens de me faire suivre un topic similaire (désolé, pourtant j'avais bien utilisé les fonctions de recherche avant de poster un nouveau sujet ... désolé, désolé, désolé) :
    http://www.developpez.net/forums/d75...nvoie-tableau/

    L'intervention de s.n.a.f.u apporte déjà un commencement de réponse :
    Citation Envoyé par s.n.a.f.u Voir le message
    C'est vrai que le comportement serait logique.
    J'avoue même m'être posé la même question en son temps.
    Je ne serais même pas étonné que la compilation soit possible si cela ne bloquait pas à l'analyse syntaxique.

    Mais c'est une limitation de ce langage (peut être pas permanente, à suivre, je ne sais pas si une modif est prévue sur ce point) qu'il faut accepter.



    Ceci dit, y a pas mort d'homme...
    Mais toujours aucune raisons sur l'absence de ce comportement dans le langage ...


    Si quelqu'un c'est déjà posé la question et/ou à déjà mener des recherches à ce sujet. Il sera aimable de partager ses conclusions sur ce point

  6. #6
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Points : 43
    Points
    43
    Par défaut
    Un premier élément de réponse de la part de johannes trouvé sur bugs.php.net :

    This has been discussed multiple times and currently nobody is able to
    provide a acceptable patch. Please see internals mailing list archives
    for more information on this.
    http://bugs.php.net/bug.php?id=41759

    Si quelqu'un à le courage de faire un petit résumé de ce que dit internals à ce sujet ...

  7. #7
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Bonjour,

    Comme je le disais précédemment, ce n'est qu'un point de détail qui n'influe même pas sur les perfs.
    Donc pourquoi s'échiner ?

  8. #8
    Membre du Club
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    37
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 37
    Points : 43
    Points
    43
    Par défaut
    c'est s'échiner pour la beauté du code s.n.a.f.u.
    La beauté du code ... c'est tout.

  9. #9
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Mouais.

    Autant j'aime bien lire de la poésie Perl pour rigoler, autant la vraie beauté réside pour moi dans le résultat, la documentation et le temps d'exécution.

    Tout le reste n'est qu'anecdotique.

Discussions similaires

  1. Réponses: 7
    Dernier message: 03/10/2008, 11h37
  2. Réponses: 4
    Dernier message: 25/10/2007, 16h04
  3. Réponses: 4
    Dernier message: 07/04/2007, 20h02
  4. valeur retournée par une fonction
    Par Biosox dans le forum C
    Réponses: 13
    Dernier message: 19/01/2007, 23h17
  5. Réponses: 11
    Dernier message: 31/10/2005, 17h59

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