In effetti non mi è molto chiaro, ma provo a rispondere ugualmente, magari ci prendo.

Non puoi fare una prima funzione che ti restituisca un array con i colori e passare questo array ad una seconda funzione che esegue il secondo foreach?