カサヒラボ RSSフィード

2007-08-15

[]phpにおける、"(ダブルクォート)と、'(シングルクォート)の使い分け


今までphpで"(ダブルクォート)と、'(シングルクォート)を使い分ける際、多少の基準はあれど、割と雰囲気でやってしまってました。

しかし今日、ちとそれはまずいよなーと感じ、自分の中で明確な使い分け基準を模索することにしました。



■文字列の場合

こちらをみると、

文字列内での変数展開は

1. "(ダブルクォート)で括った場合とヒアドキュメントでは変数展開される

2. '(シングルクォート)で括った場合には変数展開されない

となっています。


すなわち、

  • ソース
<?php
$fruit = "りんご";
echo "果物では{$fruit}が好きです。\n";
echo '果物では{$fruit}が好きです。\n';
?>
  • 実行結果

果物ではりんごが好きです。

果物では{$fruit}が好きです。\n

という違いがあるということですね。


正直、普段そんなに変数展開はやらないですし、やるとしてもヒアドキュメント内でやることが多いので、文字列に関してはシングルクォートで問題ないかなと感じます。


あと、HTMLを扱う場合も、

echo '<meta http-equiv=content-type content="text/html; charset=UTF-8">';

というふうに、属性値のダブルクォートをエスケープする必要がなくなりますしね。


ただ、

echo "you can't access";

といった英語のメッセージを扱う場合には、シングルクォートが頻繁に登場するので、そのときはダブルクウォートのほうがよいかなと思います。


■文字列連結の場合

こちらを見ると、

この結果を見ると、シングルクォート連結が一番速いようだ。

最も速かった回数は、シングルクォート連結がほぼ確実に一番だ。

しかし、平均処理時間はシングルクォート連結が速いときと

ダブルクォート連結が速いときがある。

となっており、

//シングルクォート連結
$str = 'AAA '.$str1.' CCC '.$str2.' EEE '.$str3.' GGG';
//ダブルクォート連結
$str = "AAA ".$str1." CCC ".$str2." EEE ".$str3." GGG";
//非連結
$str = "AAA $str1 CCC $str2 EEE $str3 GGG";
//{}を使った非連結
$str = "AAA {$str1} CCC {$str2} EEE {$str3} GGG";

など文字列連結した場合には、シングルクォートを使うのが早いそうです。



配列の場合

配列の場合は、こちらをみると、

配列のキーを、シングルクオートで囲む・ダブルクオートで囲む・なにも囲まないでは、処理スピードが違う。

シングル > ダブル > 囲まないの順番。

ただ、実験してみると大きいスクリプトでない限り差は顕著に見られない。

けど、可読性とバグ・エラー潰しのために囲っておくが吉。

と書いてあり、

hoge_array['key'] > hoge_array["key"] > hoge_array[key]

の順番で早いみたいですね。



以上を踏まえると・・・

まあ、シングルクォートを使えば間違いないかなと。


なので、

<?php
require_once('/home/kasahi/hogehoge.php');
$str = 'hogehoge';
print('hogehoge');
test_array = array('hoge' => 'piyo');
?>

といった感じで、基本的にphpではシングルクォートを使っていこうと思いました。



とはいえ・・・、C言語だと、文字が'A'で、文字列が"string"なんですよねぇ。

Cに戻ったときに混乱しないようにしないと。

あとは、他の人が見やすいかどうかなんですよね。


だれか何かよい意見や感想があれば教えてほしいです。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/kasahi/20070815/1187201809