正确使用双引号和单引号、连接句点和逗号

  • 本文关键字:连接 句点 单引号 php syntax
  • 更新时间 :
  • 英文 :


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并没有削减它...

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';

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

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

至于不同类型的字符串:

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

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

单引号不会扩展变量。

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

 $name = "world";
 $greeting = "Hello ".$name;

你不应该使用你的 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

如果字符串中所需的值不是变量,则必须创建变量,或者必须使用常规字符串串联(而不是内插)

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

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

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

B - 精细

C - 有一个不正确的结尾引号。 应以单引号结尾。

D - 精细

用于串联 B 或 C 都可以,但是对于相对文件路径,通常最好使用

$_SERVER['DOCUMENT_ROOT']

语法,并相对于服务器的 HTML 根文件夹访问您的文件,这意味着您的语法将类似于

$_SERVER['DOCUMENT_ROOT']."/folder/foler/".$id."/thumb";

A 不会这样做。

B是最好的。

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

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

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

最新更新