A correção mais rápida é que você precisa de um "break " no loop interno.
for ($i=0; $i < count($data)/3; $i++){
for ($j=0; $j<3; $j++){
if (($i * 3) + $j >= count($data)) {
break;
}
Observe que você deve economizar um pouco de poder de computação armazenando count($data) em uma variável - a menos que espere que a contagem mude.
$countOfData = count($data);
for ($i=0; $i < $countOfData/3; $i++){
for ($j=0; $j<3; $j++){
if (($i * 3) + $j >= $countOfData) {
break;
}