<?php
$array = ['foo' => ['bar' => 'lol', 'asdf' => ['rofl', ['haha' => 'lmao'], 'lawl']], ['hehe' => 'haha']];
function getLeafsWithKeys(array $array, array $keys = []): array
{
$result = [];
foreach ($array as $key => $value) {
$new_keys = is_numeric($key) ? $keys : array_merge($keys, [$key]);
if (is_array($value)) {
$result = array_merge([], ...[$result, getLeafsWithKeys($value, $new_keys)]);
}
else {
$result[implode(' > ', $new_keys)][] = $value;
}
}
return $result;
}
print_r(getLeafsWithKeys($array));
- Output for 7.1.25 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.26, 8.4.1 - 8.4.13
- Array
(
[foo > bar] => Array
(
[0] => lol
)
[foo > asdf] => Array
(
[0] => rofl
[1] => lawl
)
[foo > asdf > haha] => Array
(
[0] => lmao
)
[hehe] => Array
(
[0] => haha
)
)
preferences:
154.32 ms | 408 KiB | 5 Q