获取多维数组的值在另一个数组中

时间:2016-06-09 11:49:38

标签: php arrays multidimensional-array

您好我有这个结构:

$GLOBALS['config'] = array(
            'mysql' => array(
                    'host' => 'localhost',
                    'username' => 'root',
                    'password' => 'root',
                    'dbname' => 'database'
                ),
            'session' => array(
                    'session_name' => 'user'
                ),
            'remember' => array(
                    'cookie_name' => 'hash',
                    'cookie_expiry' => 604800
                ),
            'folder' => array(
                    'root' => 'backend',
                    'header' => 'head',
                    'views' => 'views'
                ),
            'database' => array(
                    'names' => 'utf8mb4',
                    'charset' => 'utf8mb4',
                    'collation' => 'utf8mb4_general_ci',
                    'driver' => 'pdo'
                ),
            'url' => array(
                'base_url' => 'http://www.example.com/backend/',
                'document_root' => $_SERVER['DOCUMENT_ROOT'] . "/backend"
                ),
            'languages' => array(
                    'english' => 'en',
                    'german' => 'de',
                    'greek' => 'gr'
                ),
            'headers' => array(
                    '404' => 'HTTP/1.0 404 Not Found',
                    '401' => 'HTTP/1.0 401 Unauthorized',
                    '500' => 'HTTP/1.0 500 Internal Server Error',
                    '403' => 'HTTP/1.0 403 Forbidden'
                ),
            'title' => array(
                    'login' => 'Admin Dashboard',
                    'register' => 'Admin Dashboard | User Registration',
                )
        );

我希望url / base_url像这样

'base_url' => 'http://www.example.com/'.$GLOBALS['config']['folder']['root'].'/'

所以,如果我更改文件夹,我只需要更改名称,但我得到一个语法错误,如:

Notice: Undefined index: config in C:\xampp-php56\htdocs\backend\core\init.php on line 31

我可能想做什么?如果可能的话怎么样?

2 个答案:

答案 0 :(得分:2)

在您仍在定义阵列的同时,您无法访问其他阵列索引。您定义数组的语句尚未完成,该数组在初始语句完成之前无法访问。

您需要尽可能多地设置数组,然后返回并添加引用其他数组索引的数组元素。

首先,在没有base_url的情况下,像你一样创建你的大阵列。

$GLOBALS['config'] = array(
    ...
);

现在返回并添加url / base_url,您现在可以访问config的数组索引。

$GLOBALS['config']['url']['base_url'] = 'http://www.example.com/'.$GLOBALS['config']['folder']['root'].'/';

示例:https://3v4l.org/M7itf

答案 1 :(得分:1)

错过了点 'base_url'=> 'http://www.example.com/' 的 $ GLOBALS [ '配置'] [ '文件夹'] [ '根'。 '/'