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;
}