That's part of the hidden dangers with the code posted earlier. It just assumes everything is in order, that there are no "gaps" in the arrays, etc...
But... If your three arrays are REALLY, TRULY ALWAYS going to be synchronized, using a FOR loop strategy would be just as good and there would be no hidden traps.
$maxCOUNT = max(count($array_1),count($array_2),count($array_3));
FOR ($loop = 0; $loop <= $maxCOUNT; $loop++) :
echo "<td>" . (isset($array_1[$loop]) ? $array_1[$loop] : " ") . "</td>";
echo "<td>" . (isset($array_2[$loop]) ? $array_2[$loop] : " ") . "</td>";
echo "<td>" . (isset($array_3[$loop]) ? $array_3[$loop] : " ") . "</td>";
IF ($loop == 15) :
// Perform action15
In the previously posted example, if some reason $array_3 were not to be set, the entire WHILE would come to a screeching halt. If you prefer using that code, you should consider changing the AND condition to an OR. this would ensure that the loop woud continue to proceed as long as data kept coming in from a least one of the arrays.