Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/242.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php text1/text2到数组[';text1';][';text2';]?_Php - Fatal编程技术网

Php text1/text2到数组[';text1';][';text2';]?

Php text1/text2到数组[';text1';][';text2';]?,php,Php,我在试着做一些像 function config( $string ){ require 'configuration.php'; return $config[$string]; } 但是当我的配置有一个2D数组时,我遇到了一个问题。比如: $config['features'] = array( 'memcached' => TRUE, 'compress' => TRUE, 'gzip' =>

我在试着做一些像

function config( $string ){
    require 'configuration.php';
    return $config[$string];
}
但是当我的配置有一个2D数组时,我遇到了一个问题。比如:

$config['features'] = array(
        'memcached' => TRUE,
        'compress'  => TRUE,
        'gzip'      => TRUE
);
我怎样才能得到
config('features/memcached')
,或者如果我们有三个或更多的线程数组,比如
config('features/memcached/version14/etc')
(示例)来返回
true
,但是当我们执行类似于
config('features')
的操作时仍然有效。有什么想法吗?

你可以试试这个(从头开始写,未经测试):

将其用作
config('features','memcached')
并注意,这只适用于一级子数组。如果可能有更多,或者如果您想坚持使用
config('features/memcached')
-语法,您可以尝试类似的方法(与上面的函数相同-这没有经过测试,可能您需要自己修复一个bug;):

您可以尝试以下方法(从head编写,未经测试):

将其用作
config('features','memcached')
并注意,这只适用于一级子数组。如果可能有更多,或者如果您想坚持使用
config('features/memcached')
-语法,您可以尝试类似的方法(与上面的函数相同-这没有经过测试,可能您需要自己修复一个bug;):


只需将字符串拆分为键:

function config( $string ){
    require 'configuration.php';
    $keys = explode('/',$string);
    $return = $config;
    foreach($keys as $key){
        $return = $return[$key];
    }
    return $return;
}
在这里,您也可以这样做:

config('features/others/foo/bar');
如果存在这种情况:

$config['features'] = array(
    'memcached' => TRUE,
    'others'  => array( 'foo' => array( 'bar' => 42 ) )
);

只需将字符串拆分为键:

function config( $string ){
    require 'configuration.php';
    $keys = explode('/',$string);
    $return = $config;
    foreach($keys as $key){
        $return = $return[$key];
    }
    return $return;
}
在这里,您也可以这样做:

config('features/others/foo/bar');
如果存在这种情况:

$config['features'] = array(
    'memcached' => TRUE,
    'others'  => array( 'foo' => array( 'bar' => 42 ) )
);

您可以使用以下方法:

public function config($path = null, $separator = '.')
{
    if (!$path) {
        return self::$_constants;
    }

    $keys = explode($separator, $path);
    require 'configuration.php';
    $value = $config;
    foreach ($keys as $key) {
        if (!isset($value[$key])) {
            throw new Exception("Value for path $path doesn't exists or it's null");
        }
        $value = $value[$key];
    }
    return $value;
}

在您的示例中,调用
config('features')
将返回数组,
config('features.compres')
将返回
true
,依此类推。

您可以使用该方法:

public function config($path = null, $separator = '.')
{
    if (!$path) {
        return self::$_constants;
    }

    $keys = explode($separator, $path);
    require 'configuration.php';
    $value = $config;
    foreach ($keys as $key) {
        if (!isset($value[$key])) {
            throw new Exception("Value for path $path doesn't exists or it's null");
        }
        $value = $value[$key];
    }
    return $value;
}
function config( $string ){
    require 'configuration.php';
    $p = explode("/",$string);
    $r =  $config;
    foreach($p as $param)
        $r = $r[$param];
    return $r;
}
在您的示例中,调用
config('features')
将返回数组,
config('features.compres')
将返回
true
,依此类推

function config( $string ){
    require 'configuration.php';
    $p = explode("/",$string);
    $r =  $config;
    foreach($p as $param)
        $r = $r[$param];
    return $r;
}