代码解释 - 存储在 php $GLOBALS变量中的数组数组


Code explanation - array of arrays stored in php $GLOBALS variable

我正在学习基于OOP的登录/注销系统的原理(由YT上的phpacademy提供)。这是让我头疼的代码:

$GLOBALS['config'] = array(
    'init' = array(
        'hostname' = "127.0.0.1",
        'username' = 'root',
        'password' = '',
        'db' = 'dbName'
    ),
    'remember' = array(
        'cookie_name' = 'hash',
        'cookie_expiry' = 604800
    ),
    'session' = array(
        'session_name' = 'user'
    )
);
spl_autoload_register(function($class){
    require_once 'classes/' . $class . '.php';
});

这显然是一个数组数组,需要各种信息来初始化会话并连接到存储在这些"子数组"中的数据库。

我无法理解的是开头 - 他显然将数组存储在$GLOBALS变量中;['config']部分是什么?

  1. 常规变量有$variableName(所以 => "全局)
  2. 常规变量有作用域、类型和值(所以 => array();)
"

[]"之间是什么?变量名称?声明后面是一个数组(为什么在"="之后使用单词数组?

非常感谢!

我认为您需要了解索引数组和关联数组之间的区别。在 PHP 中,您可以通过两种方式定义array。第一个是简单数组:

$array = array("1", "2", "3"); 

这将创建一个索引数组(数组长度的索引为 0 - n),您可以像这样访问它:

echo $array[0]; // Would echo "1"

现在很简单吗?可以声明的下一种数组类型是关联数组:

$array = array("one" => "1", "two" => "2", "three" => "3");

此阵列的设置略有不同。您不是从 0 开始并为数组中的每个元素添加 1,而是为数组定义一个key => value对,并使用该key值访问任何元素:

echo $array["one"]; // Would echo "1"

本质上,$GLOBALS是一个数组,$GLOBALS["config"]是此数组中的一个关联条目,可以随时使用 config 键进行访问。希望这是有道理的。查看 php 手册以获取有关数组及其用法的更多信息:

PHP手册

$GLOBALS是一个数组。 它是 PHP 脚本中所有全局变量的数组。 ['config'] 是您在 PHP 中访问数组中的元素的方式。

$GLOBALS数组中,他正在为数组设置'config'键。 该数组包含 3 个键:'init''remember''session' 键。

php.net 很短,但足够详细:http://php.net/manual/en/reserved.variables.globals.php

在本例中,config 是一个数组索引。即$GLOBALS数组的顶级索引。

您可以使用print_r($GLOBALS)var_dump($GLOBALS)来查看数组结构的良好表示形式。