Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/12/2010, 10h12   #1
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

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

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
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 :
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 :
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
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 11h25   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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.

Citation:
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 :
if [$a[$b] = $c] [ $c = $d[4]; ]
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 11h32   #3
Membre éprouvé
 
Avatar de radicaldreamer
 
Homme Guillaume
Développeur Web
Inscription : décembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme Guillaume
Âge : 21
Localisation : France, Haut Rhin (Alsace)

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

Informations forums :
Inscription : décembre 2007
Messages : 353
Points : 473
Points : 473
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
radicaldreamer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 11h34   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

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

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 015
Points : 5 015
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 :
1
2
3
 
$a = array('a' => 'hello');
echo "a:a = {$a{'a'}}";
Cela étant, ça ne permet toujours pas de faire
Code :
1
2
3
 
function test ($a) { var_dump($a); }
test({'a', 'b', 'c'});
ce qui est bien dommage...
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 11h56   #5
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 656
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 3 656
Points : 5 359
Points : 5 359
Attention, quand on utilise des accolades {} dans un nom de variable, ça peut être pour utiliser des variables dynamiques :
Code :
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)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 12h02   #6
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h29.


 
 
 
 
Partenaires

Hébergement Web