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 :

{} et [] ça marche!


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut {} et [] ça marche!
    Alors voilà, je me baladais à la recherche d'un problème de regex dans le forum apache et je suis tombé sur un message de Lancelot du Lac qui pointait vers une page de apache.org expliquant le mod_rewrite etc...

    J'ai un peu lu, scroll down etc... Et là je suis tombé sur un bout de code cgi:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $url = $ENV{'PATH_INFO'}; //ceci m'a chatouillé l'oeil...
    print "HTTP/1.0 302 Moved Temporarily\n";
    print "Server: $ENV{'SERVER_SOFTWARE'}\n";
    print "Location: $url\n";
    print "Content-type: text/html\n";

    Alors j'ai fais mon petit test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      $ok{'lol'} = 'fonctionne?';
      $user = $ok{'lol'};
    Et oui, ça fonctionne. J'en avais jamais entendu parlé... Jamais vu...

    Alors ma question est: à quoi cela peut-il servir d'utiliser {} au lieu de [] pour les tableaux? Est-ce plus performant? Est-ce juste pour un soucis de lisibilité qu'on utilise par convention [] pour les tableaux plutot que {} ?

    Ca ne simplifierait pas grandement d'utiliser tout le temps {} pour les if/tableau/etc... plutôt que de changer selon le type?

    Voilà, quelques interrogations, maintenant faut je retourne à ma regex ^^"
    Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

    - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour ce que j'en ai compris, le parser ne fait pas de distinction entre {} et [] dans ce cas, pour des raisons historiques de simplification du parser.

    La seule notation documentée pour un index de tableau est [] et {} doit disparaitre un jour.

    Ca ne simplifierait pas grandement d'utiliser tout le temps {} pour les if/tableau/etc... plutôt que de changer selon le type?
    Ca devrait au contraire complétement illisible et le parser aurait un sacré boulot.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if [$a[$b] = $c] [ $c = $d[4]; ]
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Points : 540
    Points
    540
    Par défaut
    Merci pour ces lumières sabotage
    Si ce que tu as à dire n'est pas plus beau que le silence, alors tais toi.

    - Pensez à voter pour les messages qui vous ont été utiles ainsi que de mettre

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    En effet, je n'avais jamais remarqué moi non plus mais visiblement tu n'est pas le seul à le faire remarquer: http://www.php.net/manual/fr/languag...rray.php#99015

    A noter que cette syntaxe est valide dans nowdow/heredoc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $a = array('a' => 'hello');
    echo "a:a = {$a{'a'}}";
    Cela étant, ça ne permet toujours pas de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    function test ($a) { var_dump($a); }
    test({'a', 'b', 'c'});
    ce qui est bien dommage...

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Attention, quand on utilise des accolades {} dans un nom de variable, ça peut être pour utiliser des variables dynamiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ${'truc'} = 'mip';
     
    echo $truc; //renvoi mip
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il y a deux choses différentes :
    $tableau{4} qui est un abus

    Et la notation complexe {$tableau[4]}
    http://www.php.net/manual/en/languag...arsing.complex
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  2. Réponses: 9
    Dernier message: 07/05/2003, 12h57
  3. BCP marche quand il veut !!!!
    Par chris92 dans le forum Outils
    Réponses: 2
    Dernier message: 24/03/2003, 09h41
  4. Comment marche GlutSwapBuffers() ?
    Par Sloughidog dans le forum OpenGL
    Réponses: 2
    Dernier message: 29/09/2002, 14h45
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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