2009-02-17 16 views
5

¿Hay alguna tipificación distinta:comillas etc

<?php echo $_SERVER[REQUEST_URI] ?> 

y

<?php echo $_SERVER['REQUEST_URI'] ?> 

y última

<?php echo $_SERVER["REQUEST_URI"] ?>? 

ellos todo el trabajo ... Yo uso la primera. ¿Quizás uno es más rápido que el otro?

Gracias

un novato

+0

Solo un consejo amistoso: haga preguntas con un título que tenga la forma de una pregunta en el futuro. Los hace más fáciles de entender rápidamente, lo cual es importante cuando hay tantas preguntas alrededor. –

Respuesta

11

sin comillas PHP interpreta el REQUEST_URI como una constante pero corrige su error tipográfico si no hay tal constante y lo interpreta como una cadena.

Cuando error_reporting incluye E_NOTICE, es probable que obtener un error como:

Aviso: El uso de REQUEST_URI constante indefinida - asumido 'REQUEST_URI' en < ruta del archivo > en la línea número < línea >

Pero si hay una constante con este nombre, PHP usará el valor de la constante e en cambio. (Véase también Array do's and don'ts)

Así que siempre usar comillas cuando quiere decir una cadena. De lo contrario, puede tener efectos secundarios no deseados.

Y para la diferencia de las cadenas entre comillas simples y dobles, consulte PHP manual about strings.

3

El primero es incorrecto: en realidad está buscando un REQUEST_URI constante que no existe. Esto generará una advertencia de nivel de aviso.

No hay diferencia entre los otros dos.

+0

¿No sería el tercero más lento que el segundo, porque php buscará nombres de variables dentro del cadena? –

+0

Eso es absolutamente insignificante. uld mejor optimizar otras cosas que esto. – Gumbo

+0

Sigue siendo un estándar útil a seguir. Solo use comillas dobles cuando haya variables para analizar (u ocasionalmente si es demasiado flojo para escapar de los apóstrofos). – Ross

1

Como una advertencia a la respuesta de Gumbo, la tercera representación - comillas dobles - en realidad hace que PHP busque variables dentro de esa cadena. Por lo tanto, ese método podría ser un poco más lento (aunque en una cadena de 11 caracteres será insignificante; sin embargo, es mejor práctica no hacer que PHP lo haga).

2

Hay una diferencia entre comillas simples y dobles en el manejo de cadenas PHP. Una cadena entre comillas dobles se evaluará para las variables incrustadas y los caracteres de escape (por ejemplo, \ n); una cadena encerrada en comillas simples no (o no tanto).

Así, por ejemplo,

$hello = "world"; 

echo "Hello $hello!\n"; 
echo 'Hello $hello!\n'; 
echo 'Done'; 

es la salida

¡Hola mundo!
¡Hola $ hola!\ nDone

En situaciones donde no tiene caracteres de escape o variables incrustadas, es ligeramente más eficiente usar comillas simples ya que requiere menos procesamiento de la cadena por el tiempo de ejecución. Sin embargo, muchas personas (yo incluido) prefieren usar comillas dobles para todas las cadenas para evitar confusiones.

-1
$_SERVER[REQUEST_URI] 

es sintácticamente incorrecto y AFAIK no se ejecutará en una instalación predeterminada de PHP5. El índice de matriz es una cadena, por lo que debe pasar cadenas. Sé que PHP4 convirtió las constantes indefinidas en cadenas dentro de los corchetes, pero aún no es una buena práctica.

EDITAR: Bueno, a menos que defina una constante llamada REQUEST_URI, que no tiene en su script de ejemplo.

$_SERVER['REQUEST_URI'] 

es el método estándar y lo que debe utilizar.

$_SERVER["REQUEST_URI"] 

también funciona mal y, aunque no es ligeramente más trabajo para el intérprete de PHP por lo menos que sea necesario analizarlo para las variables no debe ser utilizado. (y si necesita hacerlo, debe reconsiderar esa parte de su programa.

+0

El primer ejemplo es sintácticamente una corrección semántica si hay una constante con ese nombre. – Gumbo

+0

De hecho lo es. Sin embargo, este script consta de tres líneas completas, ninguna de las cuales se parece a define ("REQUEST_URI", $ _SERVER ['REQUEST_URL']); – Macha

1

Cuando PHP encuentra cadenas simples que se utilizan como teclas de matriz, comprueba si hay una constante con ese nombre y si no hay una constante por defecto, no utilizar comillas provoca un ligero golpe de rendimiento y existe la posibilidad de que el resultado no sea el esperado.

Cuestiones relacionadas