У меня есть некоторая логика, которая используется для сортировки данных, но в зависимости от ввода пользователя данные группируются по-разному. Прямо сейчас у меня есть пять разных функций, которые содержат одинаковую логику, но разные группы. Есть ли способ объединить эти функции и динамически установить значение, которое будет правильно сгруппировано. Эти назначения выполняются внутри функции
Например, иногда я сохраняю вычисления просто:
$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 [], чтобы я мог иметь одна функция вместо нескольких функций с разными ключами массива?