我正在尝试转换此数组
array(3) {
["Men"]=>
array(2) {
["Sport shoes"]=>
array(1) {
["Football shoes"]=>
array(0) {
}
}
["Winter shoes"]=>
array(0) {
}
}
["Women"]=>
array(0) {
}
["Childrens"]=>
array(0) {
}
}
此结果
Men
Men -> Sport shoes
Men -> Sport Shoes -> Football shoes
Men -> Winter shoes
Women
Childrens
我尝试了很多方法,但没有成功。 有人可以告诉我该怎么做。
谢谢。
答案 0 :(得分:2)
可以通过简单的递归函数来完成,例如:
function printArray($array, $path = []) {
if (!is_array($array) || count($array) < 1) {
return;
}
foreach ($array as $k => $v) {
if (count($path) > 0) {
echo implode(' -> ', $path) . ' -> ';
}
echo $k . PHP_EOL;
printArray($v, array_merge($path, [$k]));
}
}
答案 1 :(得分:1)
一种可能的递归方法可以像这样工作:
从空字符串开始,迭代数组并将每个键附加到结果。在继续进行下一个迭代之前,如果该值不为空,请附加递归调用的结果。到最后,您应该有一个代表整个结构的字符串。
function get_map(array $array, string $path = ''): string
{
$result = '';
foreach ($array as $key => $value) {
$result .= "$path$key\n" . ($value ? get_map($value, "$path$key->") : '');
}
return $result;
}
echo get_map($array);