Вы можете попробовать array_chunk
разбить массив на 3 элемента в первой строке.
$value = [
['no' => '1', 'title' => 'Book', 'data' => 'Susan'],
['no' => '2', 'title' => 'Comic', 'data' => 'Budi'],
['no' => '3', 'title' => 'Recipe', 'data' => 'Anwar'],
['no' => '4', 'title' => 'Magazine', 'data' => 'Leo'],
['no' => '5', 'title' => 'Novel', 'data' => 'Clara']
];
$value = array_chunk($value, 3);
echo '<table>';
foreach ($value as $row) {
echo '<tr>';
foreach ($row as $item) {
echo '<td>'.$item['no'].'</td>';
echo '<td>'.$item['title'].'</td>';
echo '<td>'.$item['data'].'</td>';
}
echo '</tr>';
}
echo '</table>';