2011-05-27 132 views
13

我注意到有些数组在最后一项之后没有逗号。我有一个数组:数组中的最后一个元素后没有逗号?

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

我有一个逗号,但没有PHP错误。我应该保留还是删除逗号?

+1

这是一个有效的PHP语法。这很奇怪,但即使是经验丰富的PHP程序员有时也会对此感到困惑。 – Nemoden 2011-05-27 00:58:34

回答

16

这是一种风格偏好,与在其他地方提到,但我会建议禁止在PHP中添加尾随逗号,因为它在某些语言中是语法无效的。特别是,我正在考虑IE浏览器处理Javascript中的这些类型的尾随逗号,这些臭名昭着的错误是当IE在其他地方成功执行脚本失败时发现的错误。它也将破坏JSON的有效性,并且在SQL列表中无效,还有其他潜在问题。

再次,这是一个偏好问题,但可能会导致您在其他方面的问题。

+4

我同意这一点 - 与JS的IE7已经咬伤我之前所描述的迈克尔 – jglouie 2011-05-27 01:00:43

+1

+1提及在IE的JS – Wiseguy 2011-05-27 01:03:40

+2

而这是不公平的,只是在这里选择IE浏览器。 SQL脚本也会失败并显示尾随逗号,但RDBMS至少会在大多数情况下提供有用的错误消息。 – 2011-05-27 01:45:00

2

听起来像一个风格偏好,如果两者都是语法正确

4

两者都是在不同的语言语法正确。如果留空,最后一个元素将被忽略。这是一个很好的小复活节彩蛋,内置于语言中,所以在开始修改数组之前,如果您手动添加一些数值,您无需继续添加,

2

最后一个元素之后的逗号可能不适用于每种语言。然而,它使版本控制系统中的差异对于支持的语言更为清晰。

/* 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. */ 
); 
相关问题