当我将键值分配给类型字符串数组时,是否必须使用引号?
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;
解决此问题的最佳做法是什么?
答案 0 :(得分: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 :(得分:1)
在这种情况下不需要引号。
如果将ALBUM_COVER_50
放在引号中,它将不再是常量,并将成为包含值“ALBUM_COVER_50”的字符串。这不太可能产生您期望的结果。
$cover
也是如此。这个变量已经包含一个字符串('greathits_cs23409.jpg')。如果将它放在单引号中,它将停止包含该值,并且只是一个值为'$ cover'的字符串。
如果您按照指示的方式使用单引号:
'\''.ALBUM_COVER_50.$cover.'\''
您将创建一个如下所示的数组键:
['\'../discography/artwork/cover/50/greatesthits_cs23409.jpg\'']
您可以删除引号。