web-dev-qa-db-ja.com

PHP配列の例が末尾にコンマを残すのはなぜですか?

次のような例を見ました。

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

ただし、実際には私は常にnotを末尾のコンマとして残しています。私は何か間違ったことをしていますか、それともこれは単に「別の」方法ですか?フレームワークを使用している場合、末尾のコンマがコード生成に悪影響を与えないでしょうか?他の言語(Java、C++)の配列宣言で末尾のコンマを使用することも確認したので、末尾のコンマを残す理由はPHPに固有のものではないと思いますが、これは私の興味をそそりました。

75
ashurexm

PHP配列の例が末尾にコンマを残すのはなぜですか?

彼らができるので。 :) 配列のPHPマニュアルエントリ の状態:

最後に定義された配列エントリの後にコンマを付けることは、珍しいことですが、有効な構文です。

真剣に、これは完全に便宜上のものなので、最初に最後のエントリに末尾のコンマを追加する必要なく、配列に別の要素を簡単に追加できます。

他の言語と言えば、JavaScriptではこれに注意してください。 Firefoxは寛大に後続のコンマを許容します。正しくは、Internet Explorerはエラーをスローします。

92
Pekka 웃

これは、複数の行で配列を定義する場合の良い方法です。 ZendFrameworkのコーディング標準 でも推奨されています。

この後者の宣言を使用するときは、配列の最後の項目に末尾のコンマを使用することをお勧めします。これにより、連続する行に新しい項目を追加することによる影響が最小限に抑えられ、カンマがないために解析エラーが発生しないことが保証されます。

22
Janci

バージョンコントロール(git)を操作しているときに、配列に1つのものを追加し、末尾にコンマがない場合、前の行にコンマを追加する必要があるため、2行を変更したように見えます。これは見た目が悪く、ファイルの変更を見るときに誤解を招く可能性があるので、末尾のコンマは良いことだと思います。

20
user985366

エントリを均一に保つため。

順序を入れ替えたり、エントリを追加または削除したりする必要がある場合は、末尾のコンマを残しておくと非常に便利です。

最後の要素にカンマを付けることができない場合は、エントリを変更して最後のカンマを維持する必要があります。エントリのスワッピングまたは変更の目的はすでに達成されているため、これは無意味な練習であり、時間と指のストロークの無駄です。

最後の要素に末尾のコンマを許可することで、プログラマーはこの煩わしくて無駄な細部を気にする必要がなくなります。

7
ahnbizcad

許可されていても、関数やループの最後のセミコロンを省くのは悪い習慣だと思います。

4
Skelly1983

他の人に代わって話すことはできませんが、通常はコードの末尾にカンマを残します。これは、後で配列に追加する場合に、以前の最後の行にコンマを追加し忘れたためにコンマが抜けていることを心配する必要がないためです。

4
Peter Horne

理由は変更のコミットです。

新しい要素を追加するときに末尾のコンマを追加する必要がある場合。 1行を変更して1行を追加しています。 (-++)

上の行にコンマがすでにあるときに新しい要素を追加するとき。追加された行は1つだけで、変更された行はありません。 (+)

4
Yani

新しい配列要素を追加するときに構文エラーを回避するのに役立つので、常に末尾のカンマを使用しています。これは単なる良い習慣です。

3
Kirzilla

これは最近私を驚かせたが、それは理にかなっている。私は長い間、同じことを達成する以前の規則に準拠しようとしました。これは、各エントリの区切りカンマを最後ではなく置くことです。

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

カンマもすべて同じように並んでいますが、見た目はいいですが、インデントが少し厄介になります。たぶんその理由のため、それは長年にわたってあまり流行していなかったようで、私はなぜ私がそれをするのか私に尋ねられました。 PHPのソリューションは妥協案だと思います。いずれにしても、今では明らかに受け入れられているソリューションです。

0
JohnBrooking

新しいエントリの先頭には常にコンマを追加しました。コンパイラはそれを「もう1つあります」という先読みの1文字のトークンと見なします。最近のコンパイラーがLR(1)(左再帰、単一トークンの先読み)を使用するかどうかはわかりませんが、コンマが後に何もないときに構文エラーが発生するのはこのためだと思います。他の開発者に同意してもらうことはめったにありませんが、JohnBrookingのように見えます。

0
Bill Hedge