2011-05-27 16 views
13

Noté que algunas matrices no tienen una coma después del último elemento. Tengo una matriz:¿No hay coma después del último elemento en la matriz?

$first_name = array(
       'name'  => 'first_name', 
       'id'   => 'first_name', 
       'maxlength' => '20',    
       'class'  => 'text', 
       'placeholder' => 'First name', 
      ); 

que tienen una coma, pero no hay errores de PHP. ¿Debo mantener o eliminar la coma?

+1

Es una sintaxis PHP válida. Es extraño pero incluso los programadores de PHP experimentados a veces se confunden con esto. – Nemoden

Respuesta

16

Es una preferencia de estilo como mencionado en otro lugar, sin embargo, le aconsejo que se prepare para no agregar esa coma final en PHP, ya que es sintácticamente inválida en algunos idiomas. En particular, estoy pensando en el manejo de Internet Explorer de esos tipos de comas finales en Javascript, que son errores notoriamente difíciles de localizar cuando las secuencias de comandos fallan en IE mientras tienen éxito en cualquier otro lugar. También romperá la validez de JSON, y no es válida en una lista SQL SELECT, entre otros problemas potenciales.

De nuevo, es una cuestión de preferencia, pero podría causarle problemas en otras áreas.

+4

Estoy de acuerdo con esto - IE7 con JS me ha mordido antes como lo describe Michael – jglouie

+1

+1 por mencionar JS en IE – Wiseguy

+2

Y no es justo solo elegir IE aquí. Los scripts SQL también fallarán con las comillas finales, pero el RDBMS al menos dará un mensaje de error útil la mayor parte del tiempo. –

2

suena como una preferencia de estilo si ambos son sintácticamente correcta

4

Ambos son sintácticamente correcta en varios idiomas. El último elemento se ignora si se deja en blanco. Es un bonito y pequeño huevo de Pascua integrado en idiomas para que no tenga que seguir agregando en , antes de empezar a modificar una matriz si tiene que agregar manualmente algunos valores más.

2

La coma después del último elemento puede no funcionar en todos los idiomas. Sin embargo, hace que los diffs en los sistemas de control de versiones sean más limpios para los idiomas soportados.

/* From */ 
$a = array(
    'element_w', 
    'element_x', 
); 
/* To */ 
$a = array(
    'element_w', 
    'element_x', 
    'element_y', /* Only this line will show in version control. */ 
); 


/* From */ 
$a = array(
    'element_w', 
    'element_x' 
); 
/* To */ 
$a = array(
    'element_w', 
    'element_x', /* These two lines    */ 
    'element_y' /* will show in version control. */ 
); 
Cuestiones relacionadas