Sto lavorando su una struttura di array che verrà utilizzata come origine dati per un modello di report in un'app Web.
I dati provengono da query SQL relativamente complesse che restituiscono una o più righe come array associativi monodimensionali. Nel caso di molti, vengono trasformati in array indicizzati bidimensionali.
I dati sono complessi e in alcuni casi ce ne sono molti. Per salvare i viaggi nel database (che sono estremamente costosi in questo scenario) sto tentando di ottenere tutti gli array di base (dati del database raw di 1 e 2 dimensioni) e inserirli, condizionatamente, in un singolo array di cinque livelli. Organizzare i dati in PHP sembra un'idea migliore che usare le istruzioni where in SQL.
Struttura matrice
Array of years(
year => array of types(
types => array of information(
total => value,
table => array of data(
index => db array
)
)
)
)
La mia prima domanda è, è una cattiva idea. Gli array di questo tipo sono appropriati per questa situazione?
Se ciò dovesse funzionare, come dovrei fare per popolarlo? Il mio pensiero iniziale era poco profondo e profondo, ma più lavoro su questo, più mi rendo conto che sarebbe molto difficile astrarre i condizionali che determinano dove ogni elemento va nell'array. Quindi sembra che partire dai dati più profondamente annidati potrebbe essere l'approccio che dovrei prendere.
Se si tratta di abuso di array, quali alternative esistono?
Modifica
Sono andato avanti con questo approccio, imparando e cambiando le cose mentre andavo. Ma ho finito con un array di finali simile. Ciò che ho imparato riguardo al profondo e profondo enigma è stato questo.
Sono andato nel processo pensando agli array esterni come il più grande di una serie di tazze, contenenti moltitudini di tazze più piccole che a loro volta contenevano un'altra moltitudine di tazze più piccole fino all'ultimo set che nella mia mente era acqua (essendo questo il matrice indicizzata dei valori del database). Gli array non sono tazze ...
L'idea si spaccò quando iniziai legittimamente a disegnare a mano le strutture dell'array e scoprii che la base di questi array, l'acqua piena di minuscole tazze che avevo immaginato, rappresentava un diavolo di molti più dati di quelle grandi tazze. Questo mi ha portato a vedere questi array profondamente annidati come torri, con i dati indicizzati che rappresentano una base di ordinamento, che si assottigliavano fino alla punta, che era l'array contenente.
Da lì, ho capito che il modo migliore per elaborare i dati era quello di raccogliere i dati di fondo, collegarli al livello successivo e poi risalire la torre collegando ogni livello al suo livello successivo.
Non sono sicuro se ho ragione, ma mi sento come se capissi gli array più ora di quanto facessi prima.
E sicuramente non sono ancora sicuro se questa è la soluzione migliore.