PHP读取全局数组的位置

PHP read position of global array

我在全局范围内有一些数组 让我们说

$t[0][1] = "a";

如何从函数访问位置?

function fc(){
   echo /* $t[0][1]*/
}

我浏览了一些关于全局变量的文章,但我没有找到解决方案,每个指南都是针对单个变量的

尝试过:

echo $GLOBALS['t[0][1]'];
echo $GLOBALS['t'][0][1];
echo $GLOBALS['t']['0']['1'];

或试过这个

$t[0][1] = "a";
function fc(){
   global $t
   echo  $t[0][1];
}

和 none 工作.... 有什么帮助吗?

提前致谢:)

你有两个选择,@Akintunde 的评论中已经提到了其中之一。

将其作为参数传递:

function fc($arr) {
  print_r($arr);
}
fc($t);

如果您打算修改它,请通过引用传递它:

function fc(&$arr) {
  $arr[0] = 'test';
}
fc($t);
echo $t[0];

您已经提到了全局方法,由于范围的原因,它可能无法正常工作,请参阅:http://php.net/manual/en/language.variables.scope.php。但我怎么强调都不为过,应该不惜一切代价避免使用 global$GLOBALS,这是一种糟糕的编程习惯,会给你带来很多麻烦。

另一种使您的变量不在外部应用程序范围内的方法是将所有内容放入您自己的静态 class,这将防止意外的变量重用。

class MyClass
{
  private static $t = [];

  public static function set($index, $value)
  {
    self::$t[$index] = $value;
  }

  public static function get($index)
  {
    return self::$t[$index];
  }
}

MyClass::set(0, 'test');
echo MyClass::get(0) . "\n";

如果您想确保您的 class 不会与现有的 class 发生冲突,请为其命名空间:http://php.net/manual/en/language.namespaces.php