PHP Erstellt eine Breadcrumb-Liste aller Werte in einem verschachtelten Array
Ich habe ein Array, das wie folgt aussieht:
[
'applicant' => [
'user' => [
'username' => true,
'password' => true,
'data' => [
'value' => true,
'anotherValue' => true
]
]
]
]
ch möchte in der Lage sein, dieses Array in ein Array zu konvertieren, das wie folgt aussieht:
[
'applicant.user.username',
'applicant.user.password',
'applicant.user.data.value',
'applicant.user.data.anotherValue'
]
rundsätzlich muss ich eine Schleife durch das verschachtelte Array ausführen und jedes Mal, wenn ein Blattknoten erreicht wird, den gesamten Pfad zu diesem Knoten als durch Punkte getrennte Zeichenfolge speicher
Nur Schlüssel mittrue
als Wert sind Blattknoten, jeder andere Knoten ist immer ein Array. Wie würde ich vorgehen, um dies zu erreichen?
bearbeite
Das ist, was ich bis jetzt versucht habe, aber nicht die beabsichtigten Ergebnisse gibt:
$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);