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;
你不应该使用你的 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
如果字符串中所需的值不是变量,则必须创建变量,或者必须使用常规字符串串联(而不是内插)
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/