Слияние двух массивов (нестандартное)

  • Автор темы Stlanik
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Stlanik

Добрый день!

Какая у меня задача:

Есть основной файл (конфиг сайта, скажем $config) - для основного приложения он представляет из себя файл php который возвращает массив, т.е. там:
[codebox]<?php

return array(...);

?>[/codebox]
И имеются подобные файлы для модулей.

Конечная цель - надо сделать array_merge_recursive, т.к. функция инициализации приложения принимает 1 аргумент - config. Т.е. мне надо запустить сайт с конфигом уже расширенным с учетом подключенных модулей. Это я делаю пробегаясь рекурсивно по директории с модулями и ищу файлы конфигов.

Т.е. я вроде бы понимаю, что мне их надо всех проинклюдить и как-то слить воедино, но как - может кто подскажет? Спасибо. 4 час сижу пыхчу, мозги сплавились :angry:
 
V

Vovochka

Код:
function init_config() {
global $CONFIG = array();
$list = get_config_files_list();
for ($i = 0; $i < count($list); $i++) {
$CONFIG = array_merge($CONFIG, require_once($list[$i]));
}
return $CONFIG;
}
Извращение типа того, что вы хотели сделать.
Но я вообще не вижу в этом смысла.
Можно в сразу в конфиг файлах писать что-то типа:
Код:
global $CONFIG;
$CONFIG = arrat_merge($CONFIG, array(
'param1' => 'value1',
...
));
Или сразу:
Код:
global $CONFIG;
$CONFIG['param1'] = 'value1';
По какой причине вы решили извращаться таким странным способом? (с возвращением массивов через include/require )
 
S

Stlanik

Дело в том, что это конструкция фреймворка (Yii framework) он так работает с конфигами. Нашел в его хелпе вариант как работать с нескольими конфигами, там тоже предлагают:

Код:
return array_merge($CONFIG, array(
'param1' => 'value1',
...
));

Но проблема в том, что подключать эти массивы надо к основному, а заранее неизвестно сколько будет дополнительных - в зависимости от того, какие я накидаю модули, но вот первый кусок кода - пища для ума, буду думать - спасибо!
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!