ワイヤード・パンチ

元・大阪人が、岡山の山奥でも生きていけることを証明するためのブログ。

phpで配列変数を作成するとき、最後尾のカンマを付けるメリット。

phpで配列変数を作成する際、各要素は改行して、なおかつ後ろにカンマをつけて区切っていきます。

配列に関するサンプルコードを見ていると、最後の要素だけはカンマを削っているのが多く見られます。

それ以上は要素がないのでカンマを消すのが一般的かもしれませんが、最後尾のカンマを残したままでも、問題なく動作してくれるのです。

広告

最後尾のカンマの有無による出力結果の違い。

カンマなしのとき。

まずは最後尾のカンマがない配列を作成して、var_dumpでどのように出力されるか確認してみます。

<?php
	$array = [
		"hoge" => 1,
		"fuga" => 2,
		"unko" => 3
	];
	var_dump($array);

出力される結果は以下のとおり。

array (size=3)
  'hoge' => int 1
  'fuga' => int 2
  'unko' => int 3

特に問題はないですね。入力したまんま出てくれてます。

カンマありのとき。

次は、最後にカンマを付けたままにした状態。

<?php
	$array = [
		"hoge" => 1,
		"fuga" => 2,
		"unko" => 3,
	];
	var_dump($array);

そして出力結果はこちら。

array (size=3)
  'hoge' => int 1
  'fuga' => int 2
  'unko' => int 3

全く変わっていませんね。

最後にカンマがあるから、その後ろに空の要素が出てしまう、なんてことはありませんでした。

PHP: array – Manual

一般的ではありませんが、 最後に定義された配列エントリの後に続くカンマがある場合、 これは有効な構文です。

上記サイトによると、一般的ではないと言われてしまっているものの、付けてもやはり問題はないようです。

最後のカンマを付けるメリット。

あってもなくても良いカンマですが、むしろ積極的につけていくべきだと、ぼくは思います。

見た目が整う。

<?php
	$array = [
		"hoge" => 1,
		"fuga" => 2,
		"unko" => 3
	];
	var_dump($array);

先程書いたようなコードの場合ですが、キーの名前も値も、桁数が揃っています。

でも、最後のカンマが抜けているだけで、不揃いに見えませんか?

<?php
	$array = [
		"hoge" => 1,
		"fuga" => 2,
		"unko" => 3,
	];
	var_dump($array);

そこで、ただ1つカンマを付け足すだけで、キレイに整ったコードに見えるようになりました。

要素の追加が楽。

配列の中身をのちのち変えたくなって、今回は最後の要素の後ろに、新しい要素を入れたくなったとしましょう。

<?php
	$array = [
		"hoge" => 1,
		"fuga" => 2,
		"unko" => 3
		"wktk" => 4
	];
	var_dump($array);

要素も追加したり、いざ実行…。でもこれだと、エラーになります。

4番目の要素が存在しているのに、3番目の要素の後ろにカンマがないからです。

<?php
	$array = [
		"hoge" => 1,
		"fuga" => 2,
		"unko" => 3,
		"wktk" => 4,
	];
	var_dump($array);

よって、要素がまだ3つだけだったときに最後のカンマを残しておくと、あとからいちいちカンマを付け足すことを意識しなくても、最後の要素の後ろに新しい要素を増やすことだけに集中できます

そのおかげで、エラーに戸惑う無駄な時間が発生することもありません。

また、新しく増やし、改めて最後になった要素の後ろにも、もちろんカンマを残しておきます。

これで5個、6個が増えても、最後の要素にカンマを付けてたら要素追加…といちいち意識しなくて気が楽です。

最後尾カンマについての補足。

なお、今回のいわゆるケツカンマが使えるのは、phpでの話。

jsonなど、他の言語ではケツカンマは許可されていない場合があります

環境設定ファイルというとたいていはjsonが使われているので、違う言語に変えてほしいですね…。

余談。配列の囲い方について。

昔のphpでは、配列は下記のように書かないといけませんでした。

<?php
	$array = array(
		"hoge" => 1,
		"fuga" => 2,
		"unko" => 3,
		"wktk" => 4,
	);
	var_dump($array);

[ ]ではなく、array( )でした。

2018年になった今でも、このような書き方をしているサンプルコードが多く見られます。

でも、いちいちarrayで入力するの、めんどくさくないですか?

php5.4の時点ですでに、array( )の代わりに[ ]が使えるように、なおかつ今はphp7以上で動いているサーバがほとんどです。

[ ]の方が入力の手間が少なく、上記のように複数行に渡って値が書かれていればひと目で配列だと把握できるので、わざわざarrayという言葉で示す必要はありません。

さらに、丸括弧はSHIFTキーを押しながらの入力になってしまいますが、角括弧なら1つのキーでOKなので、さらに楽。

(日本語キーボードの場合です。)

よって、いまだにarray( )を使っている人は、積極的に[ ]に切り替えていきましょう。

どうせならphpもcoffeescriptみたいに、カッコやカンマやセミコロンなしで書けるようになってくれたら、圧倒的に楽なんですけどね…。

それならば、今回のようなケツカンマの話が出ることもなかった。