나는이 문제를 혼자서 풀려고했지만 이해할 수있는 해결책을 찾을 수 없습니다.배열 키의 재귀 적 이름 바꾸기
동적 구성 파일을 읽음으로써 응용 프로그램이로드 될 때 즉시 작성되는이 어레이가 있습니다.
제 문제는 alias
이라는 배열을 가져오고 부모 배열의 이름을 ['@attr']
으로 변경하고 싶습니다. 여기에 제가 의미하는 것을 보여주는 예가 있습니다. 내 _alias
재산의 인 print_r을 할 경우
[database] => Array
(
[0] => Array // Would be renamed to "production"
(
[host] => test
[user] => test
[pass] => test
[name] => test
[port] => test
[@attr] => Array
(
[alias] => production
[name] => live
)
)
[1] => Array // Would be renamed to "development"
(
[user_data] => Array
(
[0] => Array // Would be renamed to "three"
(
[user] => sample
[@attr] => Array
(
[alias] => three
)
)
[1] => Array // Would be renamed to "two"
(
[user] => sample
[@attr] => Array
(
[alias] => two
)
)
)
[host] => test
[user] => test
[pass] => test
[name] => test
[port] => test
[@attr] => Array
(
[alias] => development
)
)
)
이 내가이
Array
(
[production] => Array
(
[host] => test
[user] => test
[pass] => test
[name] => test
[port] => 3306
[@attr] => Array
(
[name] => live
)
)
[development] => Array
(
[user_data] => Array
(
[0] => Array
(
[user] => sample
[@attr] => Array
(
[alias] => three
)
)
[1] => Array
(
[user] => sample
[@attr] => Array
(
[alias] => two
)
)
)
[host] => test
[user] => test
[pass] => test
[name] => test
[port] => 3306
)
)
주를 얻을 내 코드 지금까지
private function _applyXmlAlias($array)
{
foreach ($array as $config)
{
if (is_array($config))
{
if (isset($config['@attr']['alias']))
{
$alias = $config['@attr']['alias'];
unset($config['@attr']['alias']);
if (empty($config['@attr']))
{
unset($config['@attr']);
}
$this->_alias[$alias] = $config;
break;
//$this->_temp = reset();
} else {
$this->_applyXmlAlias($config);
}
}
}
}
이다 : 나는 확실히 왜 내 루프뿐만 아니라 해요 키가 alias
이고 마지막 값이 production
이고 development
내가 어떻게 접근 할 수 있는지에 대한 아이디어가 있습니까? 나는 가까운 길에 작은 가이드가 필요하다고 생각합니다.
감사
편집 : 현재 시도한다
휴식 이상 ... 내 의견을 참조하십시오. – EthanB