3

对 PHP 来说相当新,试图找出将变量等连接成字符串的正确语法。

例如:

A    $mydir = "../../uploads/images/'".$id."'/thumb"; 

B    $mydir = "../../uploads/images/".$id."/thumb"; 

C    $mydir = '../../uploads/images/'.$id.'/thumb"; 

D    $mydir = "../../uploads/images/$id/thumb";

哪一个是正确的?

当你用一个变量结束一个字符串,但必须用逗号定义下一个元素时怎么办?

    mkdir('../../uploads/images/' . $newid , 0777);

当变量在中间时怎么办?

    mkdir('../../uploads/images/' . $newid . '/thumb', 0777);

最后,任何人都可以推荐一个好的 PHP 参考资源吗?W3Schools 没有削减它...

4

7 回答 7

3

PHP 中的字符串可以使用双引号或单引号。两者之间有区别,因为使用双引号会导致 PHP 插入字符串中的任何变量。例如:

$var = 'test';
echo "This is a $var";  // outputs: This is a test

echo 'This is a $var'; // outputs: This is a $var

因此,在字符串周围使用双引号会慢一些,因为字符串必须由 PHP 插值才能输出。PHP 中的字符串也有 nowdoc 和 heredoc 支持。

除了这种区别之外,没有任何区别,您可以互换使用它们,如下例所示:

echo 'I like ' . "concatenating" . ' strings';

不过,在整个代码中保持一致可能是一个好主意。更多信息,请参阅手册

于 2012-06-06T20:08:25.277 回答
2

转到 PHP 手册: http: //php.net/manual/en/language.types.string.php

至于不同类型的字符串:

如果使用双引号字符串,则可以在字符串中包含变量,如下所示:

$name = "world";
print("Hello $name");

单引号不会扩展变量。

句点只是连接运算符。因此,如果您以连接一个变量结束,那很好。即这没关系:

 $name = "world";
 $greeting = "Hello ".$name;
于 2012-06-06T20:06:17.527 回答
1

你不应该使用你的AB,如果你有双引号,使用D更容易阅读。这并不是说你不能使用它,如果你喜欢难以阅读你的弦乐,那就去吧!

字符串后面的逗号无关紧要

mkdir('../../uploads/images/' . $newid , 0777); // works
mkdir('../../uploads/images/' . $newid . '/thumb', 0777); // works too
mkdir("../../uploads/images/$newid" , 0777); // works and is nicer to read
mkdir("../../uploads/images/$newid/thumb", 0777); // also nicer to read

如果字符串中所需的值不是变量,则要么必须创建变量,要么必须使用常规字符串连接(而不是插值)

于 2012-06-06T20:06:01.947 回答
1

B 和 D 是正确的。PHP 中单引号和双引号的唯一区别是双引号之间的内容是为 PHP 解析的。从php.net

当用双引号或 heredoc 指定字符串时,会在其中解析变量。

A - 有一对不必要的单引号。

B - 精细

C - 结尾引号不正确。应该以单引号结尾。

D - 精细

于 2012-06-06T20:04:48.557 回答
0

对于连接 B 或 C 都可以工作,但是对于相对文件路径,通常最好使用

$_SERVER['DOCUMENT_ROOT']

语法,并访问相对于服务器的 html 根文件夹的文件,这意味着您的语法看起来像

$_SERVER['DOCUMENT_ROOT']."/folder/foler/".$id."/thumb";
于 2012-06-06T20:05:34.727 回答
0

A不会做。

B是最好的。

C 有语法错误。此外,对于您通常使用的字符串",但另一方面,'在格式化html时使用:'<a href="google.com">Google!</a>'因此您不需要转义引号并且代码看起来不错。

D 有效,但不推荐。例如在 D `"blah $this -> name blah" 中不起作用。这就是原因。

于 2012-06-06T20:06:10.733 回答
0

从您的选择列表中,“B”很好,“D”也很好。我最喜欢的参考是官方手册:http ://www.php.net/manual/en/

于 2012-06-06T20:07:20.037 回答