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

Тема в разделе "PHP программирование", создана пользователем Stlanik, 17 май 2009.

Статус темы:
Закрыта.
  1. Stlanik

    Stlanik Гость

    Добрый день!

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

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

    return array(...);

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

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

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

    Vovochka Гость

    Код (Text):
    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;
    }
    Извращение типа того, что вы хотели сделать.
    Но я вообще не вижу в этом смысла.
    Можно в сразу в конфиг файлах писать что-то типа:
    Код (Text):
    global $CONFIG;
    $CONFIG = arrat_merge($CONFIG, array(
    'param1' => 'value1',
    ...
    ));
    Или сразу:
    Код (Text):
    global $CONFIG;
    $CONFIG['param1'] = 'value1';
    По какой причине вы решили извращаться таким странным способом? (с возвращением массивов через include/require )
     
  3. Stlanik

    Stlanik Гость

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

    Код (Text):
    return array_merge($CONFIG, array(
    'param1' => 'value1',
    ...
    ));
    Но проблема в том, что подключать эти массивы надо к основному, а заранее неизвестно сколько будет дополнительных - в зависимости от того, какие я накидаю модули, но вот первый кусок кода - пища для ума, буду думать - спасибо!
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей