За последние 24 часа нас посетили 38562 программиста и 1284 робота. Сейчас ищут 1055 программистов ...

Массивы, много массивов.

Тема в разделе "Прочие вопросы по PHP", создана пользователем r3l0c, 14 янв 2013.

  1. r3l0c

    r3l0c Активный пользователь

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    Не смог поставить правильно вопрос в заголовке, тк хз
    В общем есть класс, в нем есть паблик метод preload();
    Передается туда путь к файлу, а этот файл инклудится, так вот, допутим мы несколько раз выполнили preload c разными файлами, суть в чем- в этих файлах лежат ассоциативные массивы, и мне надо получить на них ссылки(так как далее эти массивы сливаются в один и используются в последствии), может мне в этих файлах написать global $массив; а перед этим их из паррент файла инициализировать, или есть другой метод? Просто как-то не кавайно получается. В идеале хотелось бы реализовать слияние этих массивов, не зная их названия :D, может есть в пыхе такие возможности? Или тогда все файлы, которые передаются в preload должны сразу в один и тот-же массив дописываться? Но тут еще маааленькое НО ---некоторые файлы содержат массивы с произвольными названиями =\. Вот как мне быть я вообще хз.

    Добавлено спустя 16 минут 55 секунд:
    А, все, решил задачу. В паррент скрипте инициализируем массив, где будут элементы всех массивов которые будут содержаться в прелоад файлах, назовем этот массив $allelems,
    допустим в презагружаемом файле лежит массив $arr и нам его элементы надо поместить в $allelems быстро и без затрат.
    содержание предзагружаемого файла:
    Код (PHP):
    1. <?php
    2. global $allelems;
    3. $arr=&$allelems;
    4. $arr['key1']='value1';
    5. $arr['key2']='value2';
    6.  
    И так во всех предзагружаемых файлах.
    В итоге потерь в производительности минимум, код увеличится тоже минимум =)

    Добавлено спустя 22 секунды:
    Может кто предложит более лучший вариант?

    Добавлено спустя 2 минуты 27 секунд:
    Просто при каждом выполнении подгружать всю инфу, а потом ее обрабатывать--это дорога в ад
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Такое огромное количество элементов в массиве, что не хочется загружать их все каждый раз? Откуда вообще пошла такая разбивка массива? Может лучше один раз слить всё это в один массив и инклудить его? Если это типа конфига - то лучше даже в ini файл, наверно. Мои замеры показали, что parse_ini_file() быстрее отработает, чем include() для одинаковых массивов. Оно и не мудрено, синтаксис ini файлов-то попроще будет.
     
  3. r3l0c

    r3l0c Активный пользователь

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    Дело в том, что инфа разная, и ключи могут совпадать и в итоге начнутся глюки. Короче говоря в итоге мне надо получить слияние произвольных массивов в 1 массив.
    У меня инклуд будет работать быстрее на 40%+разовая агрессивная оптимизация от APC с кешированием скомпилированых пых-файлов, так что закроем глаза на скорость инклуда)

    Добавлено спустя 26 минут 36 секунд:
    Просто чтобы preload("path_to.php");
    подгружал в массив со значениями ранее подгруженых, значения массива подгружаемого файла. Тоесть зохотел я подгрузить в общий массив --просто вызвал прелоад и все)
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    подключаемый файл может возвращать
    1.php
    Код (PHP):
    1. $unknow_array = array(1,2,3);
    2. return $unknow_array; 
    2.php
    Код (PHP):
    1. $array = include('1.php');
    2.  
    если подключаемые файлы будут возвращать массив, то preload сможет их получать, не зная имени этой переменной =)
     
  6. r3l0c

    r3l0c Активный пользователь

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    Ох елки, а я и забыл совсем%), огромное огромное спасибо), прям вообще то-что надо)