为什么PHP数组示例留下一个尾随逗号?

我看过如下的例子:

$data = array( 'username' => $user->getUsername(), 'userpass' => $user->getPassword(), 'email' => $user->getEmail(), ); 

然而,在实践中,我一直没有留下尾随的逗号。 我做错了什么,或者这只是另一种做法? 如果我使用的框架不会有尾随逗号负面影响代码生成? 我已经看到在其他语言(Java,C ++)的数组声明中使用尾随逗号,所以我认为留下尾随逗号的原因并不是PHP特有的,但是这引起了我的兴趣。

为什么PHP数组示例留下一个尾随逗号?

因为他们可以。 🙂 数组状态的PHP手册条目 :

在最后定义的数组条目之后有一个尾随逗号,而不寻常的是一个有效的语法。

严重的是,这完全是为了方便,所以你可以很容易地添加另一个元素到数组,而不必首先添加尾部逗号到最后一个条目。

说到其他语言:在JavaScript中注意这一点。 Firefox将宽容地容忍尾随逗号; Internet Explorer会正确地引发错误。

在多行上定义数组时,这是一个很好的做法。 ZendFramework的编码标准也鼓励它:

当使用这个后面的声明时,我们鼓励使用尾部逗号作为数组中的最后一项; 这最大限度地减less了连续添加新项目的影响,并有助于确保不会因逗号缺失而发生parsing错误。

我注意到在使用版本控制(git)的时候,如果我们向数组中添加1个东西,并且没有尾随逗号,那么看起来就像我们修改了2行,因为逗号必须添加到前一行。 我发现这看起来很糟糕,在查看文件更改时可能会产生误导,因此,我认为尾随逗号是一件好事。

我不能为其他人说话,但我通常在我的代码中留下一个尾随的逗号。 我这样做是因为如果/之后再添加到数组中,我不必担心由于忘记将逗号添加到之前的最后一行而错过了逗号。

我总是在尾随逗号,因为这有助于在添加新数组元素时避免语法错误…这只是一个好习惯。

我觉得即使允许这样做也是不好的做法,就像把函数和循环的最后一个分号排除在外。

因为它保持条目统一。

如果您不得不交换订单,或添加或删除条目,则可以留下尾随逗号,这非常方便。

如果最后一个元素不能有逗号,那么最后不得不通过修改条目来维护最后的逗号。 这是一个毫无意义的练习,浪费时间和手指的笔触,因为交换或修改条目的意图已经完成。

通过在最后一个元素上添加尾随逗号,可以让程序员免去这种令人讨厌的,没有结果的细节。