2011-08-10 15 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を引用符で囲むと、定数ではなくなり、値 'ALBUM_COVER_50'を含む文字列になります。これにより、期待した結果が得られない可能性があります。

$coverでも同じです。この変数にはすでに文字列( 'greatesthits_cs23409.jpg')が含まれています。それを一重引用符で囲むと、その値が含まれなくなり、 '$ cover'という値の文字列になります。

はあなたが示された方法で単一引用符を使用する場合:

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

あなたはこのようになります。配列のキーを作成します。

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

あなただけの引用符をドロップすることがあります。

関連する問題