La soluzione più queick è che hai bisogno di una "pausa " nel ciclo interno.
for ($i=0; $i < count($data)/3; $i++){
for ($j=0; $j<3; $j++){
if (($i * 3) + $j >= count($data)) {
break;
}
Nota che dovresti risparmiare un po' di potenza di calcolo memorizzando count($data) in una variabile, a meno che non ti aspetti che il conteggio cambi.
$countOfData = count($data);
for ($i=0; $i < $countOfData/3; $i++){
for ($j=0; $j<3; $j++){
if (($i * 3) + $j >= $countOfData) {
break;
}