在 PHP 中访问数组元素时,是否必须在索引周围使用引号(单引号和双引号)


Is it mandatory to use quotes(single quotes & double quotes) around an index while accessing array elements in PHP?

我想要这个问题的权威答案,或者你可以说出我的查询。

让我们看一下以下三个代码片段:

第一:

<!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 = '...';