非常擅长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并没有削减它......
答案 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/