変数名を引用符で囲むのは100%正しいかどうか疑問に思いました。
つまり、やる理由はありますか
echo "Hello my name is " . $name;
それ以外の
echo "Hello my name is $name";
ありがとう。
どちらも問題なく、ユーザーの好みが読みやすくなっています。個人的には、変数を連結する最初の方法を好みます。
ただし、次の点に注意してください。
echo "Hello my name is $name";
と同じではありません
echo 'Hello my name is $name';
2番目は文字通り出力します:
Hello my name is $name
覚えておくべきこと。
実際、私がすでにコメントしたように、そのように書くことは100%正しいPHP構文です。PHPでは構文エラーは発生しません。しかし、コードを実行し、不明な場合は、マニュアルで言語を検索することで、それを知っているでしょう。
つまり、簡単な答えは次のとおりです。はい、100%正解です。
次に、「やる理由はありますか」と尋ねましたが、客観的には理由がないため、理由を定義することを強くお勧めします。受け入れられた回答に示されている「メトリック」は誤解を招く可能性があります。問題が十分に分離されていないため(実際には厳密に分離することはできません)、間違った数値を比較することになります。
2つの差を計算する場合、文字通り、測定できる差はありません。ゼロ、灘、何もありません。
さらに、それは変化することさえあり、時には一方がより速く、時には他方が(あなたがそれを実行する場合、コード/デモについては以下を参照してください):
10 runs à 100 000 iterations:
single | double | diff | real
---------+----------+-----------+----------
0.014578 | 0.016206 | -0.001628 | -0.000000
0.015382 | 0.016352 | -0.000970 | -0.000000
0.015050 | 0.016156 | -0.001106 | -0.000000
0.015630 | 0.016280 | -0.000650 | -0.000000
0.015259 | 0.016220 | -0.000961 | -0.000000
0.015189 | 0.016190 | -0.001001 | -0.000000
0.014612 | 0.016264 | -0.001652 | -0.000000
0.015672 | 0.016257 | -0.000585 | -0.000000
0.015171 | 0.016251 | -0.001080 | -0.000000
0.014855 | 0.016166 | -0.001311 | -0.000000
PHPのバージョンを絶えずアップグレードすると、どちらが速いのか疑問に思うよりも、「コード」がさらに改善されます。
経験則:ボトルネックに遭遇しない限り、絶対に「最適化」しないでください。あなたはあなたのコードを良いより悪いものにするでしょう。
コードを読む必要があるので、これまたはそのように書く理由を説明します。
http://codepad.viper-7.com/z5p2xf
<?php
/**
* @link http://stackoverflow.com/questions/10530798/variable-name-inside-quotation-marks
*/
header('Content-Type: text/plain');
$iterations = 100000;
$runs = 10;
printf("%d runs à %s iterations:\n\n", $runs, number_format($iterations, 0, '', ' '));
$plateaux = 0;
for ($r = 0; $r < $runs; $r++) {
$time = microtime(true);
for ($i = 1; $i < $iterations; $i++) {
;
}
$plateaux += microtime(true) - $time;
}
$plateaux = $plateaux / $runs;
$results = array();
for ($r = 0; $r < $runs; $r++) {
$result = &$results[];
$time = microtime(true);
for ($i = 1; $i < $iterations; $i++) {
"name$i";
}
$result[1] = microtime(true) - $time;
$time = microtime(true);
for ($i = 1; $i < $iterations; $i++) {
"name" . $i;
}
$result[0] = microtime(true) - $time; #
unset($result);
}
echo " single | double | diff | real \n";
echo "---------+----------+-----------+----------\n";
foreach ($results as $result) {
$delta1 = $result[0] - $plateaux;
$delta2 = $result[1] - $plateaux;
$diff = $delta1 - $delta2;
printf("%f | %f | %f | %f\n", $delta1, $delta2, $diff, $diff / $iterations);
}
それは純粋に好みであり、どちらも100%正しいです。読みやすさのために、私は連結の最初の方法を好みます。
唯一の違いはパフォーマンスです。引用符に変数名を挿入すると、より多くのプロセッサが使用されます。
デモンストレーション:
<?php
$name='name';
$time = microtime(true);
for ($i=1; $i<100000; $i++){
$name = "name".$i;
echo "Hello my name is " . $name;
}
echo '<br>*** duration:'.(microtime(true)-$time).' milliseconds ***<br>';
$time = microtime(true);
for ($i=1; $i<100000; $i++){
$name = "name$i";
echo "Hello my name is $name";
}
echo '<br>*** duration:'.(microtime(true)-$time).' milliseconds ***<br>';
?>
このスクリプトをIntelコアI3-21203.3Ghzで実行すると、次の値が返されます。
*期間:0.25428795814514ミリ秒
期間:2.8928861618042ミリ秒*
違いは大したことではありませんが、概念を示すためだけです。