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

时间:2012-06-06 20:01:10

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

7 个答案:

答案 0 :(得分: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';

但是,在整个代码中保持一致可能是一个好主意。有关详细信息,请参阅manual

答案 1 :(得分:2)

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

至于不同类型的字符串:

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

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

单引号不会扩展变量。

句点只是连接运算符。所以,如果你通过连接一个很好的变量来结束。即这没关系:

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

答案 2 :(得分:1)

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

  

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

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

B - 精细

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

D - FINE

答案 3 :(得分:1)

如果您使用双引号,则不应使用 A B ,使用 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

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

答案 4 :(得分:0)

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

$_SERVER['DOCUMENT_ROOT']

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

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

答案 5 :(得分:0)

A不会这样做。

B是最好的。

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

D有效,但不推荐。例如在D`“blah $ this - &gt; name blah”将无效。这就是原因。

答案 6 :(得分:0)

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