2009-09-04 4 views
1

Lequel ci-dessous est correct? Le premier code n'a pas de guillemets dans le tableau $ _GET et le second fait, je sais que vous êtes censé les avoir quand c'est une chaîne de texte mais dans ce cas c'est une variable, et si la clé est un nombre?Les clés de tableau PHP doivent-elles être placées entre guillemets?

ne cite

function arg_p($name, $default = null) { 
    return (isset($_GET[$name])) ? $_GET[$name] : $default; 
} 

avec des citations

function arg_p($name, $default = null) { 
    return (isset($_GET['$name'])) ? $_GET['$name'] : $default; 
} 
+0

est 'Parenthèses()' et non ' '''. Ces derniers sont des guillemets simples ou des apostrophes. – Gumbo

+0

Quand vous dites parenthèses() faites-vous référence à() ou à des parenthèses []? Si je ne suis pas complètement confus, ou si vous avez modifié le post, il semble que la seule différence entre vos deux cas sont les simples guillemets autour de '$ name'. – dnagirl

+1

La réponse de Gumbo est juste. En outre, je ferais remarquer que dans ce cas, la version sans guillemets simples est presque certainement une erreur. il se comporterait toujours de la même façon, indépendamment de la valeur de $ name. – Kip

Répondre

10

Le premier utilisera la valeur de $name comme la clé alors que la seconde utilise la chaîne littérale '$name' comme la clé.

+0

OK bien donc $ quelque chose [3]; ne montrerait pas un AVIS non? – JasonDavis

+3

@jasondavis: Je suppose que vous vouliez dire le décalage * inconnu */* inconnu index *.C'est parce que vous devriez tester si cet élément existe avant d'essayer de le lire. Une façon de le faire est 'isset', un autre' array_key_exists'. – Gumbo

7

Avec PHP, $_GET["$name"] et $_GET[$name] sont identiques, car PHP évaluera les variables entre guillemets. Cela retournera la clé de n'importe quelle banque $name.

Cependant, $_GET['$name'] recherchera la clé de $name elle-même, quelle que soit la variable contenue dans la variable $name.

Si la clé est un nombre, $_GET[6], $_GET['6'] et $_GET["6"] sont tous syntaxiquement égaux.

2
  • si la clé est une variable

    $ array [$ key];

vous n'avez pas à le citer.

  • mais si une chaîne littérale, vous devez (ce n'est pas une chaîne si vous n'enveloppez pas dans les guillemets)

    $ array [ « MyKey »];

et vous obtiendrez un avis si vous le faites comme ça

$array[mykey]; 
+1

vous ne recevrez pas une erreur pour $ array [mykey]. vous obtiendrez seulement un avis de PHP. consultez http://thephpcode.blogspot.com/2009/09/php-speed-up-quote-your-strings.html pour plus à ce sujet. – mauris

+0

oui vous c'est vrai mais toujours pas bon – Ayoub

Questions connexes