Tengo un poco de lógica que se utiliza para ordenar los datos, pero dependiendo de la entrada del usuario, los datos se agrupan de manera diferente. En este momento tengo cinco funciones diferentes que contienen la misma lógica pero diferentes agrupaciones. ¿Hay alguna forma de combinar estas funciones y establecer dinámicamente un valor que se agrupe correctamente? Dentro de la función de estas asignaciones están sucediendoCómo establecer dinámicamente claves de matriz en php
Por ejemplo, a veces almaceno los cálculos simplemente por:
$calcs[$meter['UnitType']['name']] = ...
pero otras veces necesito una agrupación más específico:
$calcs[$meter['Resource']['name']][$meter['UnitType']['name']][date('Y-m',$start)] =...
Como se puede ver en ocasiones se almacena en una matriz multidiminesional y otras veces no. He estado tratando de usar eval() pero sin éxito (no estoy seguro de que sea el enfoque correcto). Almacenar los datos en una variable temporal realmente no ahorra mucho porque hay muchos bucles anidados y sentencias if para que la matriz tenga que repetirse en varios lugares.
EDITAR
espero que el siguiente ejemplo explica mejor mi problema. Obviamente es un callados versión:
if(){
$calcs[$meter['UnitType']['name']] = $data;
} else {
while() {
$calcs[$meter['UnitType']['name']] = $data;
}
}
Ahora la misma lógica se puede utilizar, pero para su almacenamiento en diferentes claves:
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;
}
}
¿Hay una manera de abstraer las teclas en el $ calc [] matriz para que pueda tener una función en lugar de tener múltiples funciones con diferentes teclas de matriz?
¿Se podría gestionar mejor usando objetos? –
Realmente no entiendo el problema. ¿Estás tratando de consultar estas estructuras de datos de manera uniforme? – erisco
Hice una edición para ayudar a explicar. Espero que ayude. – Kramer