我想要这个问题的权威答案,或者你可以说出我的查询。
让我们看一下以下三个代码片段:
第一:
<!DOCTYPE html>
<html>
<body>
<?php
$x = 5;
$y = 10;
function myTest() {
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
}
myTest();
echo $y;
?>
</body>
</html>
第二:
<!DOCTYPE html>
<html>
<body>
<?php
$x = 5;
$y = 10;
function myTest() {
$GLOBALS["y"] = $GLOBALS["x"] + $GLOBALS["y"];
}
myTest();
echo $y;
?>
</body>
</html>
第三:
<!DOCTYPE html>
<html>
<body>
<?php
$x = 5;
$y = 10;
function myTest() {
$GLOBALS[y] = $GLOBALS[x] + $GLOBALS[y];
}
myTest();
echo $y;
?>
</body>
</html>
对于上述每个代码片段,我在浏览器 15 中得到了相同的结果。
如果你仔细观察了上述三个代码片段,你会发现以下三个不同的语句:
//From First Code Snippet. Here I've used single quotes around the array index.
$GLOBALS['y'] = $GLOBALS['x'] + $GLOBALS['y'];
//From Second Code Snippet. Here I've used double quotes around the array index.
$GLOBALS["y"] = $GLOBALS["x"] + $GLOBALS["y"];
//From Third Code Snippet. Here I've not used any kind of quotes around the array index.
$GLOBALS[y] = $GLOBALS[x] + $GLOBALS[y];
所以,我的疑问如下:
- 在访问特定数组元素时,是否必须在数组索引周围使用引号?
- 如果是,那么哪种类型的引号,我的意思是单引号还是双引号?
- 尽管我得到了相同的结果,但我在上一个代码片段中没有使用任何类型的引号。这是否意味着在访问数组元素时使用引号不是强制性的?
- 或者这是仅对数组有效的特殊情况
$GLOBALS
?
在 PHP 中,单引号和双引号的行为几乎相同。唯一的例外是双引号允许转义。
在这种情况下,$GLOBALS["y"]
和$GLOBALS['y']
是相同的。
$GLOBALS[y]
可能有效,但存在问题。 y
引用一个名为 y
的常量变量。如果你没有,它被解析为一个字符串,因此就像上面一样工作。
关于您的问题
但这实际上是错误的,你应该使用引号!
在访问特定数组元素时,是否必须在数组索引周围使用引号?
绝对。
如果是,那么哪种类型的引号,我的意思是单引号还是双引号?
就像我说的,你可以使用任何一个。我个人更喜欢单('
(的,但这取决于你。
尽管我得到了相同的结果,但我在上一个代码片段中没有使用任何类型的引号。这是否意味着在访问数组元素时使用引号不是强制性的?
请参阅对问题 #1 的回答。
或者这是仅对数组有效的特殊情况$GLOBALS?
它被解释为一个常量变量,定义为const y = '...';