La solución más rápida es que necesita un "break " en el bucle interior.
for ($i=0; $i < count($data)/3; $i++){
for ($j=0; $j<3; $j++){
if (($i * 3) + $j >= count($data)) {
break;
}
Tenga en cuenta que debe ahorrar una fracción de potencia informática almacenando el conteo ($datos) en una variable, a menos que espere que el conteo cambie.
$countOfData = count($data);
for ($i=0; $i < $countOfData/3; $i++){
for ($j=0; $j<3; $j++){
if (($i * 3) + $j >= $countOfData) {
break;
}