我是 PHP 的初学者,正在尝试学习并想知道这些代码之间的区别:
echo "<div>$lang[CATEGORY_NAME]</div>";
echo "<div>" . $lang['CATEGORY_NAME'] . "</div>";
以及何时应该使用每一个。
我是 PHP 的初学者,正在尝试学习并想知道这些代码之间的区别:
echo "<div>$lang[CATEGORY_NAME]</div>";
echo "<div>" . $lang['CATEGORY_NAME'] . "</div>";
以及何时应该使用每一个。
生病将我的答案分成3部分。
换句话说,代码如
回声“傻笑”;
在双引号字符串中,PHP 解释器在字符串中查找变量,并用它们的值替换它们。所以下面的代码
$lol = "你好吗";
回声“foo $lol”;
将产生以下输出。
foo 你好吗
请注意,在双引号字符串中,PHP 解释器将始终查找变量并将其替换为它们的值,即使字符串中没有变量(这可能会导致性能问题,但稍后再说)。
即像这样的代码
$lol = '你好';
echo '$lol 用户';
在这种情况下,PHP 解释器按原样输出字符串。所以如果你还没有猜到,输出将是
$lol 用户
(请参阅 $lol 没有被它的值替换,在这种情况下 $lol 只是一个以美元符号开头的字符串(不是变量)。
顾名思义,用于连接字符串。特殊的 PHP 字符。(点)用于连接字符串,例如
$lol = '你好';
$bar = '用户';
回声$大声笑。' ' 。$酒吧。'。你好吗?';
输出将是
你好用户。你好吗?
现在来回答。正如我已经说过的,双引号字符串会在其中查找变量,所以如果您不打算在字符串中输出变量,使用单引号字符串总是更快。至于输出变量,最好将它们与单引号字符串连接,而不是使用双引号字符串。请参见以下示例:
echo "你好 {$arr['var1']['var2']}。你好吗?";
此代码不清楚,当您想要输出包含引号等的字符串时,它可能会导致问题。另外,正如您所指出的(感谢 Martina 的评论),如果您想输出带有键的数组,您必须用它们包围它们{ 和 },所以双引号字符串中的变量读起来很乱。
这段代码
回声“你好”。$arr['var1']['var2'] 。'。你好吗?';
更具可读性,解析速度更快。
希望这能回答你的问题:)
双逗号字符串内的变量是变量。因此,当解析代码时,它被视为变量。在后面的示例中,您将字符串与 $variable 连接。应该使用后一种方法,因为它提供了清晰的可读性并且花费更少的时间来解析代码。另一件事是您可以在后面的示例中使用单逗号,在第一个示例中使用双逗号。但是将 $variables 从字符串中分离出来并使用 concat 是一个很好的做法。
带变量的单逗号
例子 :
echo '<div>$lang[CATEGORY_NAME]</div>';
输出
<div>$lang[CATEGORY_NAME]</div>
带 concat 的单逗号
echo '<div>' . $lang['CATEGORY_NAME'] . '</div>';
输出
Category_name // whatever
带变量的双逗号
例子 :
echo "<div>$lang[CATEGORY_NAME]</div>";//parser will search for variable inside string
输出
Category_name // whatever
双逗号与 concat
echo "<div>" . $lang['CATEGORY_NAME'] . "</div>";
输出
Category_name // whatever
现在由您决定选择什么。
echo '<div>' . $lang['CATEGORY_NAME'] . '</div>';
这具有不在引号内搜索变量的优点(使用单引号,否则解析器必须检查字符串中的变量)。
当 PHP 遇到双引号"
时,它会执行字符串扫描以评估可能在内部(在运行时)提到的任何需要评估的变量。与 不同"
,单引号'
使 PHP 按原样使用字符串,无需进一步评估,因此速度更快。
在这种情况下,
echo '<div>' . $lang['CATEGORY_NAME'] . '</div>';
稍微好一点,因为<div>
and</div>
标记不再需要 PHP 的任何评估。此外,PHP 可以执行一些优化,$lang['CATEGORY_NAME']
因为它会在编译时标记它是什么(感谢 APC,在脚本文件更改后只进行一次编译)。
在第一种情况下
echo "<div>$lang[CATEGORY_NAME]</div>";
该字符串是在运行时解析的,因此比上述版本稍贵。