You can implement recursive processing with a stack:
$separator = '-';
$flat = array();
while ($array);
{
$key = key($array);
$value = array_shift($array);
if (is_array($value))
{
foreach($value as $subKey => $node)
{
$array[$key.$separator.$subKey] = $node;
}
}
else
{
$flat[$key] = $value;
}
}
Output (Demo):
Array
(
[one] => one_value
[two-four] => four_value
[two-five] => five_value
[three-six-seven] => seven_value
)