Как динамически устанавливать ключи массива в php

У меня есть некоторая логика, которая используется для сортировки данных, но в зависимости от ввода пользователя данные группируются по-разному. Прямо сейчас у меня есть пять разных функций, которые содержат одинаковую логику, но разные группы. Есть ли способ объединить эти функции и динамически установить значение, которое будет правильно сгруппировано. Эти назначения выполняются внутри функции

Например, иногда я сохраняю вычисления просто:

$calcs[$meter['UnitType']['name']] = ...

, но в других случаях требуется более конкретная группировка:

$calcs[$meter['Resource']['name']][$meter['UnitType']['name']][date('Y-m',$start)] =...

Как вы можете видеть, иногда они хранятся в многомерном массиве и других раз нет. Я пытался использовать eval (), но безуспешно (не уверен, что это правильный подход). Хранение данных во временной переменной на самом деле не сильно экономит, потому что существует много вложенных циклов и операторов if, поэтому массив придется повторять в нескольких местах.

РЕДАКТИРОВАТЬ

Надеюсь, следующий пример лучше объясняет мою проблему. Очевидно, это упрощенная версия:

if(){
     $calcs[$meter['UnitType']['name']] = $data;
} else {
    while () {
       $calcs[$meter['UnitType']['name']] = $data;
    }
} 

Теперь можно использовать ту же логику, но для хранения ее в разных ключах:

if(){
     $calcs[$meter['Resource']['name']][$meter['UnitType']['name']][date('Y-m',$start)] = $data;
} else {
    while () {
       $calcs[$meter['Resource']['name']][$meter['UnitType']['name']][date('Y-m',$start)] = $data;
    }
} 

Есть ли способ абстрагироваться от ключей в массиве $ calc [], чтобы я мог иметь одна функция вместо нескольких функций с разными ключами массива?

9
задан Kramer 13 September 2010 в 21:28
поделиться