PHP转换数组为字符串(文件夹&递归)


PHP convert Array to String (Folder & recursive)

我卡住了,....

我有一个像这样的数组:
$myArray['red'][0] = "valueRed0";
$myArray['red'][1] = "valueRed1";
$myArray['blue'][0] = "valueBlue0";
$myArray['blue'][1] = "valueBlue1";
$myArray['green'][0] = "valueGreen0";
$myArray['green'][1] = "valueGreen1";
$myArray['green'][top][0] = "valueGreenTop0";
$myArray['green'][top][1] = "valueGreenTop1";
$myArray['green'][bottom][0] = "valueGreenBottom0";
$myArray['green'][bottom][1] = "valueGreenBottom1";

作为我需要的输出:

array(
'red/valueRed0',
'red/valueRed1',
'blue/valueBlue0',
'blue/valueBlue1',
'green/valueGreen0',
'green/valueGreen1',
'green/top/valueGreenTop0',
'green/top/valueGreenTop1',
'green/bottom/valueGreenBottom0',
'green/bottom/valueGreenButtom1'
)

所以这意味着:如果键是字符串,它必须是文件夹。如果键是整数,则该值必须是一个新值。

解释不同大小的数组是递归的,这一点很重要。

有人能帮我吗,我解不出这个递归的东西....div ?

下面是如何做到这一点的一个例子

<?php
$myArray['red'][0] = "valueRed0";
$myArray['red'][1] = "valueRed1";
$myArray['blue'][0] = "valueBlue0";
$myArray['blue'][1] = "valueBlue1";
$myArray['green'][0] = "valueGreen0";
$myArray['green'][1] = "valueGreen1";
$myArray['green']['top'][0] = "valueGreenTop0";
$myArray['green']['top'][1] = "valueGreenTop1";
$myArray['green']['bottom'][0] = "valueGreenBottom0";
$myArray['green']['bottom'][1] = "valueGreenBottom1";
print_r(flatten($myArray));
function flatten($data,$keys=array()){
        $out=array();
        foreach($data as $key=>$val){
                if(!is_array($val)){
                        $out[] = implode("/",$keys)."/".$val;
                }else{
                        $out = array_merge($out,flatten($val,array_merge($keys,array($key))));
                }
        }
        return $out;
}
输出:

Array
(
    [0] => red/valueRed0
    [1] => red/valueRed1
    [2] => blue/valueBlue0
    [3] => blue/valueBlue1
    [4] => green/valueGreen0
    [5] => green/valueGreen1
    [6] => green/top/valueGreenTop0
    [7] => green/top/valueGreenTop1
    [8] => green/bottom/valueGreenBottom0
    [9] => green/bottom/valueGreenBottom1
)