получать данные из бэкэнда в три столбца в одной строке

Я делаю функцию, в которой данные, которые я пытаюсь получить, входят в two columns в one row и генерируются несколько строк. Данные упорядочены в таблице, и я попытался сделать таблицу с three columns вместо two но она не работает. Иногда в некоторых строках он пропускает один столбец, и иногда он выводит идеальные 3 столбца в одну строку. Я под кодом работает идеально для two columns в каждой строке. Но как заставить данные появляться в three column в одной строке?

 $r = 1; $html = ""; $html .= '<table class="table table-bordered"> <tbody><tr>'; foreach($products as $pr) { if($r != 1) {$rw = (bool)($r & 1); $html .= $rw ? '</tr><tr>' : ''; } $html .= '<td><strong>'.$pr->name.'</strong><br>'.'<strong>Rs '.$pr->price.'</strong><br>'.$this->product_barcode($pr->code, 30, 147).'</td>'; $r++; } $html .= '</tr></tbody> </table>'; $data['html'] = $html; 

Вот скриншот на выходе. Его появление в 2 столбцах в одном ряду. Я хочу 3 колонки в одной строке.

См. Его ближайшие в 2 столбцах, я хочу это в 3