数组中最后一个元素后面不需要逗号吗?

17
我注意到有些数组在最后一项后面没有逗号。我有一个数组:
$first_name = array(
              'name'        => 'first_name',
              'id'          => 'first_name',
              'maxlength'   => '20',             
              'class'       => 'text',
              'placeholder' => 'First name',
            );

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


1
这是一个有效的PHP语法。虽然有经验的PHP程序员有时也会感到困惑,但这很奇怪。 - Nemoden
4个回答

15

正如其他地方提到的那样,这是一种风格偏好,但我建议您养成在PHP中不添加尾随逗号的习惯,因为它在某些语言中是语法无效的。特别是,我考虑到Internet Explorer在处理Javascript中的这种类型的尾随逗号时的处理方式,在IE中脚本失败而在其他地方成功时,这些问题非常难以定位。它也会破坏JSON的有效性,并且在SQL SELECT列表中是无效的,除了其他潜在的问题。

再次强调,这只是一种偏好问题,但可能会在其他方面给您带来麻烦。


4
我同意这个观点——就像Michael所描述的那样,使用带有JS的IE7曾经让我吃过苦头。 - jglouie
2
这里只挑IE是不公平的。SQL脚本在有尾随逗号时也会失败,但大多数情况下,关系型数据库管理系统至少会提供有用的错误信息。 - Michael Berkowski
谢谢!实际上我在一个星期前在Explorer中遇到了这种js错误。 :) - CyberJunkie
1
请不要说“适用于所有语言”!例如,Python是允许这样做的。 - socketpair
@socketpair 你误解了表述 - "因为这种方法在所有语言中都不可行" 实际上指的是 "这个方法在某些语言中无效,而在其他语言中有效". 没有特别列举任何它 可以 生效的语言 (例如Python,PHP),这是为了告知有时它会失败。"不适用于所有" 从未意味着 "在所有语言中都无效",就像你所理解的那样。无论如何,您始终可以提出关于旧问题的更正建议。 - Michael Berkowski
我希望所有编程语言都允许尾随逗号。当您频繁编辑列表时,您很可能会忘记逗号或在末尾添加一个逗号。逗号应该表示“这是元素的结束位置,并且下一个元素的潜在位置将始终存在,无论它是否存在。”结束括号将让程序知道列表的结尾。JavaScript数组似乎可以接受结尾逗号。 - user3015682

6

在某些语言中,最后一个元素后面的逗号可能不起作用。然而,在支持的语言中,这样做可以使版本控制系统更加清晰。

/* 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. */
);

5

在许多语言中,这两种写法都是语法正确的。如果最后一个元素留空,则会被忽略。这是一种很好的小彩蛋,内置于语言中,以便在手动添加更多值时,您不必在开始修改数组之前不断添加 ,


2
听起来像是风格偏好,如果两种写法在语法上都正确的话。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接