PHP:在双引号内使用变量

时间:2012-05-09 08:29:11

标签: php

请检查以下代码。

$imagebaseurl = 'support/content_editor/uploads/$name';

$imagebaseurl是一个变量,其中包含指向我的图像文件夹(上传)的链接,在文件夹中我有一些以我的用户名命名的其他文件夹。例如:我有一个名叫john的用户,所以链接应该像这样 - > support/content_editor/uploads/john

主要的想法是,当任何用户登录并浏览他的图片库时,我想把他带到他自己的画廊,该画廊基本上以他的名字命名。

当他访问图库时,链接中$name的值将来自用户的登录名(来自会话)。现在问题是因为您可能已经理解$name在上述链接中的位置是错误的,这就是它无法正常工作的原因。我正在获取整个网址> (support / content_editor / uploads / $ name)而不是(support / content_editor / uploads / john)

现在,请您告诉我如何使用此$name

中的$imagebaseurl = 'support/content_editor/uploads/$name';

2 个答案:

答案 0 :(得分:42)

$imagebaseurl = 'support/content_editor/uploads/' . $name;

$imagebaseurl = "support/content_editor/uploads/{$name}";

请注意,如果您使用双引号,您也可以将上面的内容写为:

$imagebaseurl = "support/content_editor/uploads/$name";

虽然习惯在双引号而不是{$...}中使用$...,但是你需要在字符串中插入变量,而PHP中哪些部分不明显是变量,哪个部分是字符串。

如果您想获得最佳性能,请使用带单引号的字符串连接。

答案 1 :(得分:-3)

我对上一篇文章不能不同意。

我差点把它称为使用

的不良做法
$varname = 'EXAMPLE';

$fulltext = "This is an $varname";

根据我的经验,它可以更好地利用我的一个好朋友sprintf();

define('CONST_NAME', 'This is an example of a better %s');
define('EXAMPLE', sprintf(CONST_NAME, 'practice'));

echo EXAMPLE;

为什么呢?第一个可能看起来更清楚,但第二个更可重复使用。我推荐使用sprintf而不是php magic double quote nonesense,字面意思是,没有其他语言存在。

http://php.net/manual/en/function.sprintf.php

这也是与C#和许多其他语言非常相似的做法。

另请参阅:https://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx