<?php
$old = [
(object)[
'ID1' => '000000036',
'NAME1' => 'Блоки, крюковые подвески',
'ID2' => '000000057',
'NAME2' => 'Блоки монтажные',
],
(object)[
'ID1' => '000000036',
'NAME1' => 'Блоки, крюковые подвески',
'ID2' => '000000058',
'NAME2' => 'Блоки усиления',
],
(object)[
'ID1' => '000000036',
'NAME1' => 'Блоки, крюковые подвески',
'ID2' => '000000060',
'NAME2' => 'Крюковые подвески',
],
(object)[
'ID1' => '000000094',
'NAME1' => 'Домкраты',
'ID2' => '',
'NAME2' => '',
],
(object)[
'ID1' => '000000016',
'NAME1' => 'Захваты',
'ID2' => '000000219',
'NAME2' => 'Захват бетонных блоков',
],
(object)[
'ID1' => '000000016',
'NAME1' => 'Захваты',
'ID2' => '000000221',
'NAME2' => 'Захват бетонных колец',
],
(object)[
'ID1' => '000000016',
'NAME1' => 'Захваты',
'ID2' => '000000215',
'NAME2' => 'Захват бордюрного камня',
],
];
$new = [];
foreach ($old as $item){
$new[$item->ID1]['block_id'] = $item->ID1;
$new[$item->ID1]['block_name'] = $item->NAME1;
$new[$item->ID1]['block_items'][] = [
'item_id' => $item->ID2,
'item_name' => $item->NAME2,
];
}
print_r($new);
Array
(
[000000036] => Array
(
[block_id] => 000000036
[block_name] => Блоки, крюковые подвески
[block_items] => Array
(
[0] => Array
(
[item_id] => 000000057
[item_name] => Блоки монтажные
)
[1] => Array
(
[item_id] => 000000058
[item_name] => Блоки усиления
)
[2] => Array
(
[item_id] => 000000060
[item_name] => Крюковые подвески
)
)
)
[000000094] => Array
(
[block_id] => 000000094
[block_name] => Домкраты
[block_items] => Array
(
[0] => Array
(
[item_id] =>
[item_name] =>
)
)
)
[000000016] => Array
(
[block_id] => 000000016
[block_name] => Захваты
[block_items] => Array
(
[0] => Array
(
[item_id] => 000000219
[item_name] => Захват бетонных блоков
)
[1] => Array
(
[item_id] => 000000221
[item_name] => Захват бетонных колец
)
[2] => Array
(
[item_id] => 000000215
[item_name] => Захват бордюрного камня
)
)
)
)
$displayA = $displayB = $displayC = false;
foreach ($res as $row) {
if ($displayA && $displayB && $displayC) {
break;
}
if ($row['a'] > 0) {
$displayA = true;
}
if ($row['b'] > 0) {
$displayB = true;
}
if ($row['c'] > 0) {
$displayC = true;
}
}
echo '<table class="table" style="max-width: 100%; min-width: 75%;"><thead><tr><td>Наименование</td>';
if ($displayA) {
echo '<td>A</td>';
}
if ($displayB) {
echo '<td>B</td>';
}
if ($displayC) {
echo '<td>C</td>';
}
echo '<td>Цена</td></thead><tbody>';
foreach ($res as $row) {
echo '<tr>';
echo '<td>' . $row['item-name'] . '</td>';
if ($displayA) {
echo '<td>' . $row['a'] . '</td>';
}
if ($displayB) {
echo '<td>' . $row['b'] . '</td>';
}
if ($displayC) {
echo '<td>' . $row['c'] . '</td>';
}
echo '<td>' . $row['price-rozn'] . '</td>';
echo '<tr>';
}
Одно или два двоеточия?
Нет никакой разницы между :before и ::before или между :after и ::after. Синтаксис с двумя двоеточиями характерен для CSS3.
На www.w3.org/TR/css3-selectors/#pseudo-elements есть такой абзац:
Этот знак (::) введен для того, чтобы отличить псевдо-классы от псевдо-элементов. Для совместимости с уже существующими таблицами стилей псевдо-элементы в CSS 1 и 2 также возможно задавать с одним двоеточием (в частности, :first-line, :first-letter, :before и :after