将数组转换为php中的字符串

时间:2018-09-17 19:49:39

标签: php arrays sorting multidimensional-array

我正在尝试转换此数组

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

我尝试了很多方法,但没有成功。 有人可以告诉我该怎么做。

谢谢。

2 个答案:

答案 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]));
    }
}

Live demo

答案 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);