Php 这些代码之间有什么区别

Php 这些代码之间有什么区别,php,Php,我是一名PHP初学者,正在努力学习,希望了解这些代码之间的区别: echo "<div>$lang[CATEGORY_NAME]</div>"; echo "<div>" . $lang['CATEGORY_NAME'] . "</div>"; echo“$lang[类别名称]”; “回声”$lang['CATEGORY_NAME']。""; 当我应该使用每一个时。双逗号字符串中的变量是变量。因此,当解析代码时,它被视为变量。在后面的示例中,

我是一名PHP初学者,正在努力学习,希望了解这些代码之间的区别:

echo "<div>$lang[CATEGORY_NAME]</div>";

echo "<div>" . $lang['CATEGORY_NAME'] . "</div>";
echo“$lang[类别名称]”;
“回声”$lang['CATEGORY_NAME']。"";

当我应该使用每一个时。

双逗号字符串中的变量是变量。因此,当解析代码时,它被视为变量。在后面的示例中,您将字符串与$variable关联。应该使用后一种方法,因为它提供了清晰的可读性,并且解析代码所需的时间更少。 另一件事是,在后面的示例中可以使用单逗号,在第一个示例中可以使用双逗号。但将$variables从字符串中分离出来并使用concat是一个很好的实践

带变量的单逗号

例如:

echo '<div>$lang[CATEGORY_NAME]</div>';
echo "<div>$lang[CATEGORY_NAME]</div>";//parser will search for variable inside string
带变量的双逗号

例如:

echo '<div>$lang[CATEGORY_NAME]</div>';
echo "<div>$lang[CATEGORY_NAME]</div>";//parser will search for variable inside string
带concat的双逗号

echo '<div>' . $lang['CATEGORY_NAME'] . '</div>';
echo "<div>" . $lang['CATEGORY_NAME'] . "</div>";

现在,您可以选择什么了。

双逗号字符串中的变量是变量。因此,当解析代码时,它被视为变量。在后面的示例中,您将字符串与$variable关联。应该使用后一种方法,因为它提供了清晰的可读性,并且解析代码所需的时间更少。
echo '<div>' . $lang['CATEGORY_NAME'] . '</div>';
另一件事是,在后面的示例中可以使用单逗号,在第一个示例中可以使用双逗号。但将$variables从字符串中分离出来并使用concat是一个很好的实践

带变量的单逗号

例如:

echo '<div>$lang[CATEGORY_NAME]</div>';
echo "<div>$lang[CATEGORY_NAME]</div>";//parser will search for variable inside string
带变量的双逗号

例如:

echo '<div>$lang[CATEGORY_NAME]</div>';
echo "<div>$lang[CATEGORY_NAME]</div>";//parser will search for variable inside string
带concat的双逗号

echo '<div>' . $lang['CATEGORY_NAME'] . '</div>';
echo "<div>" . $lang['CATEGORY_NAME'] . "</div>";
现在,您可以选择什么了。

echo'$lang['CATEGORY_NAME'].';
echo '<div>' . $lang['CATEGORY_NAME'] . '</div>';
这样做的优点是不在引号内搜索变量(使用单引号,否则解析器必须检查字符串中的变量)

echo“”$lang['CATEGORY_NAME'].';

这样做的优点是不在引号内搜索变量(使用单引号,否则解析器必须检查字符串中的变量)

当PHP遇到双引号
”时,它会执行字符串扫描,以计算(在运行时)中可能提到的任何需要计算的变量。与
”不同,单引号
使PHP按原样使用字符串,无需进一步计算,因此速度更快

在这种情况下,

echo '<div>' . $lang['CATEGORY_NAME'] . '</div>';

字符串是在运行时解析的,因此比上面的版本稍微贵一些。

当PHP遇到双引号时,“,它会执行字符串扫描来计算任何可能在运行时提到的需要计算的变量。与
不同,单引号
使PHP按原样使用字符串,无需进一步计算,因此速度更快

在这种情况下,

echo '<div>' . $lang['CATEGORY_NAME'] . '</div>';

字符串在运行时被解析,因此比上面的版本稍微贵一些。

我将把我的答案分成三部分

1.双引号字符串 换句话说,代码类似于

回声“foo-lol”

PHP解释器在双引号字符串中查找字符串中的变量,并用它们的值替换它们。所以下面的代码

$lol=“你好吗”

回声“foo$lol”

将产生以下输出

福你好吗

请注意,在双引号字符串中,PHP解释器将始终查找变量并用它们的值替换它们,即使字符串中没有变量(这可能会导致性能问题,但稍后会出现)

2.单引号字符串 i、 e.代码式

$lol=‘你好’

回显“$lol user”

在本例中,PHP解释器按原样输出字符串。因此,如果您还没有猜到,输出将是

$lol用户

(请参见$lol没有被其值替换,在本例中,$lol只是一个以美元符号开头的字符串(不是变量)

3.字符串连接 顾名思义,用于连接字符串。例如,用于连接字符串的特殊PHP字符。(点)

$lol=‘你好’

$bar='user'

回声$lol.'.$bar.'.你好吗?'

输出将是

你好,用户。你好吗

性能和使用 现在是答案。正如我已经说过的,双引号字符串将查找其中的变量,因此如果您不打算在字符串中输出变量,那么使用单引号字符串总是会更快。 至于输出变量,最好使用单引号字符串连接变量,而不是使用双引号字符串。 请参见以下示例:

回声“你好{$arr['var1']['var2']}。你好吗?”

这段代码不清楚,当您想要输出包含引号的字符串时,可能会导致问题。同样,正如您所指出的(感谢Martina注释),如果您想要输出带有键的数组,您必须用{和}包围它们,因此双引号字符串中的变量很难读取

此代码

回音“你好”。$arr['var1']['var2']”。你好吗

更具可读性,解析速度更快


希望这能回答你的问题:)

我将我的答案分成三部分

1.双引号字符串 换句话说,代码类似于

回声“foo-lol”

PHP解释器在双引号字符串中查找字符串中的变量,并用它们的值替换它们。所以下面的代码

$lol=“你好吗”

回声“foo$lol”

将产生以下输出

福你好吗

请注意,在双引号字符串中,PHP解释器将始终查找变量并用它们的值替换它们,即使字符串中没有变量(这可能会导致性能问题,但稍后会出现)

2.单引号字符串 i、 e.代码式

$lol=‘你好’

回显“$lol user”

在本例中,PHP解释器按原样输出字符串。因此,如果您还没有猜到,输出将是

$lol u