написал вывод дерева:
$sql= "SELECT id, parent_id, user_id FROM modxev_programm_one group by `id` asc";
$cats = array();
$statement = $modx->query($sql);
$parent = $statement->fetchAll(PDO::FETCH_ASSOC);
foreach ($parent as $res) {
$cats[$res['parent_id']][] = $res;
}
$tmp = -1;
$count = 0;
function build_tree($cats,$parent_id){
if(is_array($cats) and count($cats[$parent_id])>0){
$tree = '<div class="item-children">';
$count = 0;
foreach($cats[$parent_id] as $cat){
$count = $count + 1;
$tree .= '<div class="item-child">
<div class="item">
<div class="item-parent">
<div class="item-data">
<img src="https://storytsa.com/attach/user/images/1490332239.jpg" alt="">
<div class="span">'.$cat['user_id'].'lj - '.$count.'</div>
</div>
</div>';
$tree .= build_tree($cats,$cat['id']);
$tree .= '
</div>
</div>
';
}
$tree .= '</div>';
}
else return null;
return $tree;
}
echo build_tree($cats,2);
для такой структуры
как вывести родителей, у которых нет дочек либо одна?
Может есть смысл хранить в базе NestedSet?
$sqlResult = [
['user_id' => 2, 'parent_id' => 1],
['user_id' => 1, 'parent_id' => null],
['user_id' => 3, 'parent_id' => 1],
['user_id' => 4, 'parent_id' => 6],
['user_id' => 5, 'parent_id' => 2],
['user_id' => 6, 'parent_id' => null],
];
$indexed = [];
foreach ($sqlResult as $row) {
$indexed[$row['user_id']] = $row;
}
unset($sqlResult);
foreach ($indexed as $row) {
if (!empty($row['parent_id'])) {
$indexed[$row['parent_id']]['childs'][$row['user_id']] = &$indexed[$row['user_id']];
}
}
foreach ($indexed as $index => $row) {
if ($row['parent_id'] == null) {
renderTree([$row]);
}
}
unset($indexed);
function renderTree(array $tree, $level = -1) {
$level++;
foreach ($tree as $row){
echo str_repeat("\t", $level) . $row['user_id'] . "\n";
if (!empty($row['childs'])) {
renderTree($row['childs'], $level);
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Сделал по данному примеру https://gostashit/ru/stashes/1533-podklucenie-k-serveru-websocket-iz-web-prilozenia Сервер запускается,