<?php
class Node
{
private $nodes = [];
public function __construct(array $nodes = [])
{
$this->nodes = $nodes;
}
public function getCount()
{
return count($this->nodes);
}
public function getCountRecursive()
{
$count = 0;
foreach ($this->nodes as $node) {
$count += ($node->getCountRecursive() + 1);
}
return $count;
}
}
$node = new Node([
new Node([
new Node([
new Node([
new Node(),
new Node(),
new Node(),
]),
new Node(),
new Node(),
]),
new Node(),
new Node(),
]),
new Node(),
]);
var_dump($node->getCount(), $node->getCountRecursive());