let price = (function(){
return (roofpt && 5500) ||
(roofmat == 1 && 7900) ||
(roofmat == 2 && 8900) ||
0
})();
group by make_name,
MIN(p2.cost)
foreach(array_unique(array_column($data,'fio')) as $name){ // вот здесь мы перебираем всех юзеров....
echo "<tr><td>$name</td>";
foreach($allDates as $day){ // здесь выводим для них часы
foreach($data as $i){
if($i['fio']==$name && $i['date']==$day && print("<td>{$i['cha']}</td>"))
continue 2;
}
echo "<td>-</td>";
}
// вот здесь часы уже выведены и если мы хотим добавить что-то еще (переработку или длину х...., то здесь это делать самое время.). Значит сюда можно добавить еще один foreach и в случае совпадения id создать еще один столбец. А если совпадений нет , то все равно создать , но сделать его пустым (чтобы наша таблица не сломалась).
echo "</tr>";
\\*