【问题标题】:Code explanation - array of arrays stored in php $GLOBALS variable代码解释 - 存储在 php $GLOBALS 变量中的数组数组
【发布时间】:2015-03-11 15:49:42
【问题描述】:

我正在学习基于 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';
});

这显然是一个数组数组,其中包含初始化会话和连接到存储在这些“子数组”中的 DB 所需的各种信息。

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

  1. 常规变量有 $variableName (so => "GLOBALS)
  2. 正则变量具有范围、类型和值(so => array();)

“[]”之间的 thi 是什么?变量名?声明后面是一个数组(为什么在“=”之后是数组?)

非常感谢!

【问题讨论】:

标签: php arrays globals


【解决方案1】:

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

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

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

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

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

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

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

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

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

PHP Manual

【讨论】:

  • 感谢您的解释,非常感谢!我实际上已经阅读并学习了基本类型的数组 :) 但这给我带来了麻烦。以此类推,GLOBALS 数组应该有一对键/值对,其中一个具有键“config”。这个有三个键:init、remember 和 session。这就是为什么混乱
  • @AlexStarbuck:$GLOBALS 将有其他键/值对,是的。它包含脚本中的所有全局变量(以变量名作为键)。
【解决方案2】:

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

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

【讨论】:

  • 所以基本上和他做的一样:$GLOBALS[0]=1; $GLOBALS[1]=随便; $GLOBALS[3]=...?啊哈!尤里卡时刻:)
  • @AlexStarbuck:是的,但是他用'config'作为键而不是0,值是一个数组:)
  • 谢谢你!只是您遇到困难的情况之一,而且非常简单!干杯!
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    在这种情况下,config 是一个数组索引。即$GLOBALS 数组的顶级索引。

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

    【讨论】:

      猜你喜欢
      • 2013-01-14
      • 1970-01-01
      • 2015-04-21
      • 2012-10-17
      • 1970-01-01
      • 2016-07-22
      • 2011-01-28
      • 1970-01-01
      • 2019-12-10
      相关资源
      最近更新 更多