PHP Criar lista de navegação de todos os valores na matriz aninhada

Eu tenho uma matriz que se parece com o seguinte:

[
    'applicant' => [
        'user' => [
            'username' => true,
            'password' => true,
            'data' => [
                'value' => true,
                'anotherValue' => true
            ]
        ]
    ]
]

O que eu quero poder fazer é converter essa matriz em uma matriz que se parece com:

[
    'applicant.user.username',
    'applicant.user.password',
    'applicant.user.data.value',
    'applicant.user.data.anotherValue'
]

Basicamente, preciso de alguma forma fazer um loop na matriz aninhada e sempre que um nó folha for atingido, salve o caminho inteiro nesse nó como uma sequência separada por pontos.

Somente teclas comtrue como um valor são nós folha, todos os outros nós sempre serão uma matriz. Como eu realizaria isso?

editar

Isto é o que eu tentei até agora, mas não fornece os resultados pretendidos:

    $tree = $this->getTree(); // Returns the above nested array
    $crumbs = [];

    $recurse = function ($tree, &$currentTree = []) use (&$recurse, &$crumbs)
    {
        foreach ($tree as $branch => $value)
        {
            if (is_array($value))
            {
                $currentTree[] = $branch;
                $recurse($value, $currentTree);
            }
            else
            {
                $crumbs[] = implode('.', $currentTree);
            }
        }
    };

    $recurse($tree);

questionAnswers(1)

yourAnswerToTheQuestion