-1

変数名を引用符で囲むのは100%正しいかどうか疑問に思いました。

つまり、やる理由はありますか

echo "Hello my name is " . $name;

それ以外の

echo "Hello my name is $name";

ありがとう。

4

4 に答える 4

3

どちらも問題なく、ユーザーの好みが読みやすくなっています。個人的には、変数を連結する最初の方法を好みます。

ただし、次の点に注意してください。

echo "Hello my name is $name";

と同じではありません

echo 'Hello my name is $name';

2番目は文字通り出力します:

Hello my name is $name

覚えておくべきこと。

于 2012-05-10T09:15:45.983 に答える
2

実際、私がすでにコメントしたように、そのように書くことは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);
}
于 2012-05-11T07:26:57.523 に答える
0

それは純粋に好みであり、どちらも100%正しいです。読みやすさのために、私は連結の最初の方法を好みます。

于 2012-05-10T09:09:19.940 に答える
0

唯一の違いはパフォーマンスです。引用符に変数名を挿入すると、より多くのプロセッサが使用されます。
デモンストレーション:

<?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ミリ秒*

違いは大したことではありませんが、概念を示すためだけです。

于 2012-05-10T09:38:21.427 に答える