PHP读取全局数组的位置

时间:2017-05-30 10:42:31

标签: php arrays global

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

$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];
}

并且没有工作.... 对此有何帮助?

提前致谢:)

1 个答案:

答案 0 :(得分:2)

您有两种选择,其中一种已在@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 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";

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