СУХОЙ цикл foreach с динамической переменной

Я пытаюсь найти наилучший способ высушить цикл foreach. Мне нужен цикл, чтобы добавить узел в массив дерева, только если у него есть дочерние элементы.

$categories = Category::all();

$nodes = $categories->toTree();

$tree[] = [
'id' => null,
'name' => '--No Parent--'
];

foreach ( $nodes as $node ) {

$tree[] = [
'id' => $node->id,
'name' => $node->name
];

foreach ( $node->children as $node2 ) {

$tree[] = [

'id' => $node2->id,
'name' => $node->name.' > '. $node2->name
];

}
}

0

Решение

Выглядит как простой if что проверки для этого условия будут работать для вас.

$categories = Category::all();

$nodes = $categories->toTree();

$tree[] = [
'id' => null,
'name' => '--No Parent--'
];

foreach ( $nodes as $node ) {
if ( is_array($node->children) && count($node->children) > 0 ) {
$tree[] = [
'id' => $node->id,
'name' => $node->name
];

foreach ( $node->children as $node2 ) {

$tree[] = [

'id' => $node2->id,
'name' => $node->name.' > '. $node2->name
];

}
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]