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

ash*_*exm 72 php arrays code-generation

我见过如下例子:

$data = array(
   'username' => $user->getUsername(),
   'userpass' => $user->getPassword(),
   'email' => $user->getEmail(),
);
Run Code Online (Sandbox Code Playgroud)

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

Pek*_*ica 96

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

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

在最后定义的数组条目之后有一个尾随逗号,虽然不常见,但它是一个有效的语法.

说真的,这完全是为了方便,因此您可以轻松地向数组添加另一个元素,而无需先将尾随逗号添加到最后一个条目.

说到其他语言:在JavaScript中要小心.Firefox将宽容地容忍尾随逗号; 正确地说,Internet Explorer会抛出错误.

  • Perl也允许尾随逗号,我相信它是鼓励的.在使用源代码控制的开发人员之间共享代码时,实际上非常好.如果你想在最后添加一行,你需要添加一个逗号,这意味着你要触及两行.一个`git blame`(或其他源代码控制中的等价物)将显示你写了那行,即使你刚刚添加了一个逗号.这不是一个大问题,但方便. (9认同)
  • 现在,新版本的JavaScript比IE6/7代码明确允许它. (6认同)
  • JSON也是,JSON讨厌尾随逗号. (4认同)
  • 如果您在源代码控制下将文件保持在较低的数量,这将很有用。 (2认同)
  • Lua 还允许尾随逗号,这是为了数组项的一致性和易于编写而鼓励的。 (2认同)

Jan*_*nci 23

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

当使用后一种声明时,我们鼓励对数组中的最后一项使用尾随逗号; 这可以最大限度地减少在连续行上添加新项目的影响,并有助于确保由于缺少逗号而不会发生解析错误.


use*_*366 20

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

  • 这绝对是为什么尾随逗号用于 :) Diff 一致性 (2认同)

ahn*_*cad 8

因为它使条目保持一致.

如果您必须交换订单,或添加或删除条目,您知道能够留下尾随逗号是非常方便的.

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

通过在最后一个元素上使用尾随逗号,它使程序员不必倾向于这个烦人且无结果的细节.


Pet*_*rne 5

我不能代表其他人发言,但我通常会在代码中留下逗号。我这样做是因为如果/当我以后添加到数组时,我不必担心由于忘记在以前的最后一行添加逗号而错过逗号。


Yan*_*ani 5

原因是提交更改。

如果必须在添加新元素时添加结尾逗号。您要更改1行并添加1行。(-++)

当上面的行中已经有逗号时,添加新元素时。仅添加了1行,没有更改。(+)