2011-02-18 2 views
1

나는배열에 텍스트 1/텍스트 2 [ 'text1'] [ 'text2']?

function config($string){ 
    require 'configuration.php'; 
    return $config[$string]; 
} 

같은 것을 만들려고하지만 내 설정은 2 차원 배열을 가질 때 나는 문제가있다. 같은 :

$config['features'] = array(
     'memcached' => TRUE, 
     'compress' => TRUE, 
     'gzip'  => TRUE 
); 

어떻게 config('features/memcached')를 얻을 수 있습니다 또는 우리가 세 개 config('features/memcached/version14/etc') (예)와 같은 더 스레드 배열을 할 수 있는지 true을 반환하지만 우리는 config('features') 반환 단지 위의 기능과 같은 배열과 같은 작업을 수행 할 때 여전히 작동합니다. 어떤 아이디어?

답변

1

그냥 키에 문자열을 분할 배열을 반환합니다 config('features')를 호출하여 예에서

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.compres') 등등 true과를 반환합니다 :

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

이가 (머리에서 작성된 테스트하지)을 시도 할 수 :

function config($key, $subkey = null){ 

    require 'configuration.php'; 

    return ($subkey)? $config[$key][$subkey] : $config[$key]; 

} 

config('features','memcached')로 사용이는 하위 배열의 한 단계로 동작합니다. 더 많은 것이 있거나 config('features/memcached') -syntax를 고수하고 싶다면 위와 같은 기능을 시도 할 수 있습니다 (위의 함수와 동일 - 테스트하지 않았거나 직접 버그를 수정해야 할 수도 있습니다).) :

여기
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'); 

을이 존재하는 경우 :

function config($string){ 

    require 'configuration.php'; 

    $keys = explode('/',$string); 

    foreach($keys as $key){ 
     $config = $config[$key]; 
    } 

    return $config; 

} 
1

당신은 그 aproach를 사용할 수 있습니다.

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