27

请检查以下代码。

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

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

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

当他访问画廊时$name,链接中的值将来自用户的登录名(来自会话)。现在的问题是,您可能已经了解$name上述链接中的放置位置是错误的,这就是它不起作用的原因。我得到了整个 URL> (support/content_editor/uploads/$name) 而不是 (support/content_editor/uploads/john)

现在你能告诉我如何$name在这个中使用$imagebaseurl = 'support/content_editor/uploads/$name';

4

2 回答 2

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

或者

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

注意,如果你使用双引号,你也可以把上面的写成:

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

{$...}养成使用双引号而不是 only的习惯是很好的$...,因为有时您需要将变量插入字符串中,而 PHP 不知道哪一部分是变量,哪一部分是字符串。

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

于 2012-05-09T08:30:23.953 回答
-7

我不能更不同意之前的帖子。

我几乎可以称其为不好的做法

$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 魔术双引号无意义,从字面上看,没有其他语言存在。

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

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

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

于 2017-05-09T20:59:58.917 回答