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

时间:2015-04-04 13:18:27

标签: php arrays globals

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

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

首先:

<!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数组有效吗?

1 个答案:

答案 0 :(得分:2)

在PHP中,单引号和双引号的行为几乎相同。唯一的例外是双引号允许转义。

$GLOBALS["y"]$GLOBALS['y']在这种情况下是相同的。

$GLOBALS[y]可能有用,但有问题。 y引用名为y的常量变量。如果你没有,它会被解析为一个字符串,就像上面那样工作。

关于您的问题

但实际上这是错误的,你应该使用引号!

  

在访问特定数组元素时,是否必须在数组索引周围使用引号?

绝对

  

如果是,那么哪种类型的引号,我的意思是单引号或双引号?

就像我说的,你可以使用其中之一。我个人更喜欢单一('),但这取决于你。

  

虽然我得到了相同的结果,但我在上一个代码段中没有使用过任何引号。这是否意味着在访问数组元素时使用引号不是强制性的?

见问题#1的答案。

  

或者这是特殊情况,只对$ GLOBALS数组有效吗?

它被解释为定义为const y = '...';

的常量变量