为什么我的首选项数据是作为数组而不是字符串返回的?

时间:2017-01-02 10:31:12

标签: php arrays string oop data-conversion

我正在使用此Config类让我更容易读出我的首选项。

<?php

class Config {
    public static function get($path = null) {
        if ($path){
            $config = $GLOBALS['config'];
            $path = explode('/', $path);

            foreach($path as $bit) {
                if(isset($config[$bit])) {
                    $config = $config[$bit]; 
                }
            }

            return $config;
        }

        return false;
    }
}

现在,我应该可以在我的脚本中使用这一行来获取配置:

echo Config::get('settings/main_color');

我的首选项位于JSON文件中,但存储在$ GLOBALS ['config']中的数组如下所示:

Array ( 
    [mysql] => Array ( 
        [host] => localhost:3307 
        [username] => root 
        [password] => usbw 
        [db] => webshop )
    [remember] => Array ( 
        [cookie_name] => hash 
        [cookie_expiry] => 604800 ) 
        [sessions] => Array ( 
        [session_name] => user 
        [token_name] => token ) 
    [settings] => Array ( 
        [main_color] => #069CDE 
        [front_page_cat] => Best Verkocht,Populaire Producten 
        [title_block_first] => GRATIS verzending van €50,- 
        [title_block_second] => Vandaag besteld morgen in huis! ) 
    [statics] => Array ( 
        [header] => enabled 
        [title_block] => enabled 
        [menu] => enabled 
        [slideshow] => enabled 
        [left_box] => enabled 
        [email_block] => enabled 
        [footer] => enabled 
        [keurmerken] => enabled 
        [copyright] => enabled ) 
)

现在,当我尝试在我的脚本中找到一个pref时。它说我的字符串是一个数组。所以我使用print_r来显示数组。然后是以下结果:

  

的print_r(配置::得到( '设置/ main_color'));

     

数组([标题] =&gt;已启用[title_block] =&gt;已启用[menu] =&gt;已启用[幻灯片显示] =&gt;已启用[left_box] =&gt;已启用[email_block] =&gt;已启用[页脚] =&gt;启用[keurmerken] =&gt;启用[版权] =&gt;启用)

我的脚本在哪里犯了错误?

1 个答案:

答案 0 :(得分:0)

如果真的,你的数组是结构化的,如上所示,这应该可行

<?php

class Config {
public static function get($path = null) {
    if ($path){
        $config = $GLOBALS['config'];
        $path = explode('/', $path);

        $parent = $path[0];
        $child = $path[1];

        if(isset($config[$parent][$child])) {
            $config = $config[$parent][$child]; 
        }

        return $config;
    }

    return false;
}
}

希望它有所帮助。