2012-06-06 62 views
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不會削減它...

+0

W3Schools的是一個壞的參考乾脆,http://php.net –

+0

您在C語法錯誤,應該是'$ MYDIR =」 ../../uploads/圖像/'.$ ID '/拇指'。 ' –

回答

1

B和D是正確的。 PHP中單引號和雙引號之間唯一的區別在於雙引號之間的內容針對PHP進行了解析。從php.net

當用雙引號或者定界符指定字符串時, 變量會被解析。

A - 有一對不必要的單引號。

B - FINE

C - 有錯誤的結束報價。應以單引號結尾。

d - FINE

0

進行連結B或C將兩者的工作,但是,對於相對文件路徑,通常最好使用

$_SERVER['DOCUMENT_ROOT'] 

語法,你的文件的相對訪問您的服務器的HTML根文件夾,這意味着你的語法看起來像

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

也,http://www.php.net是一個很好的資源,並有很多的例子 – Mike

1

你不應該用你的一個,如果你有雙引號,使用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 

如果字符串中所需的值不是一個變量,你要麼必須創建一個變量,或者你必須使用普通字符串連接(而不是插值)

0

一個不會做。

B是最好的。

C有一個語法錯誤。此外,對於字符串,通常可使用",但在另一方面,'格式HTML時喜歡使用:'<a href="google.com">Google!</a>'所以你不需要逃避的報價和代碼看起來不錯。

d工作,但不推薦。例如在D``等等$ this - > name blah「將不起作用。這就是原因。

2

轉到PHP手冊:http://php.net/manual/en/language.types.string.php

而對於不同類型的字符串:

如果使用雙引號字符串,可以包括這樣的字符串的內部變量:

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

單引號不會擴大變量。

週期僅僅是連接運算符。所以如果你通過連接一個很好的變量來結束。即這是好的:

$name = "world"; 
$greeting = "Hello ".$name; 
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

+0

涵蓋了一切,我想把我的回答+1 :) – Jashwant