2011-08-10 101 views
1

當我將一個鍵值賦給一個字符串類型的數組時,它是否必須用引號引起來?數組中的字符串,引號或沒有引號

define('ALBUM_COVER_50', '../discography/artwork/cover/50/'); 
define('ALBUM_COVER_ZOOM', '../discography/artwork/cover/800/'); 

$selected_artwork = array(); 
$cover = 'greatesthits_cs23409.jpg'; 

$selected_artwork[ALBUM_COVER_50.$cover] = ALBUM_COVER_ZOOM.$cover; 

在上面的代碼中,我一定把ALBUM_COVER_50.$cover像報價:

$selected_artwork['\''.ALBUM_COVER_50.$cover.'\''] = ALBUM_COVER_ZOOM.$cover; 

什麼是去了解這個問題的最佳做法是什麼?

回答

1

不,如果使用變量或定義的常量作爲數組鍵,則不需要用引號引起來。你應該把你使用的鍵看作一個字符串值本身。 PHP會像處理其他任何字符串值一樣處理它,這意味着您可以使用變量,雙引號變量插值,連接或任何您需要構造數組鍵的值。

如果它提高了可讀性,我會經常將所需的數組密鑰存儲到一個變量中。最近我需要這樣做,因爲數組鍵是3或4個字符串連接的結果,讀取起來很笨拙。

// To improve readability 
// instead of performing string operations inside the array key [] 
$selected_artwork[ALBUM_COVER_50.$cover] = ALBUM_COVER_ZOOM.$cover; 

// becomes... 
$k = ALBUM_COVER_50.$cover; 
$selected_artwork[$k] = ALBUM_COVER_ZOOM.$cover; 
1

這種情況下不需要引號。

如果將放在引號中,它將不再是常量,並且將變爲包含值'ALBUM_COVER_50'的字符串。這不太可能產生你期望的結果。

$cover也是如此。這個變量已經包含一個字符串('greatesthits_cs23409.jpg')。如果將它放在單引號中,它將不再包含該值,並且只是一個值爲'$ cover'的字符串。

如果您在您指定的方式使用單引號:

'\''.ALBUM_COVER_50.$cover.'\'' 

您將創建一個看起來像這樣的數組鍵:

['\'../discography/artwork/cover/50/greatesthits_cs23409.jpg\''] 

你可能只是下降的報價。

相關問題