Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从一个数组构造所有可能的路径?_Php_Arrays_Combinations - Fatal编程技术网

Php 如何从一个数组构造所有可能的路径?

Php 如何从一个数组构造所有可能的路径?,php,arrays,combinations,Php,Arrays,Combinations,我有这个阵列: Array ( [images] => Array ( [0] => g [1] => hp ) [g] => Array ( [0] => menu [1] => submenu [2] => icons ) [hp] =>

我有这个阵列:

Array
(
    [images] => Array
        (
            [0] => g
            [1] => hp
        )

    [g] => Array
        (
            [0] => menu
            [1] => submenu
            [2] => icons
        )

    [hp] => Array
        (
            [0] => cat
            [1] => icons
            [2] => banners
        )

    [menu] => Array
        (
            [0] => v1
        )

    [submenu] => Array
        (
            [0] => img
            [1] => icons
        )

    [icons] => Array
        (
            [0] => v1
        )

    [cat] => Array
        (
            [0] => kt
            [1] => hk
            [2] => bm
            [3] => w
            [4] => m
            [5] => at
            [6] => e
        )

    [banners] => Array
        (
            [0] => v1
        )

    [img] => Array
        (
            [0] => e
        )

    [kt] => Array
        (
            [0] => v1
        )

    [hk] => Array
        (
            [0] => v1
        )

    [bm] => Array
        (
            [0] => v1
        )

    [w] => Array
        (
            [0] => v1
        )

    [m] => Array
        (
            [0] => v1
        )

    [at] => Array
        (
            [0] => v1
        )

    [e] => Array
        (
            [0] => v1
        )

)
这里的
images
是主文件夹。我想构造这个数组的所有可能路径,从
images
开始,作为第一个子数组,如果数组中有任何值作为元素存在,它也是一个子文件夹,我想遍历并执行相同的操作,直到构造所有可能的路径

因此,一些可能的路径是:

images/g/menu/v1
images/g/submenu/img/e/v1

Se how
g
图像中的一个值,但也存在于数组本身中。所以我通过
g
,看到了
菜单
,它同样存在于数组中。同样地,通过
菜单
的每个值,它们将是
v1
,而这在数组中不存在。因此,构建的路径应该是:
images/g/menu/v1

可能有更好的方法,但这应该可以做到:

$myArray = [
'images' => ['g','hp'],
'g' => ['menu','submenu','icons'],
'hp' => ['cat', 'icons', 'banners'],
'menu' => ['v1',],
'submenu' => ['img','icons'],
'icons' => ['v1'],
'cat' => ['kt','hk','bm','w','m','at','e'],
'banners' => ['v1'],
'img' => ['e'],
'kt' => ['v1',],
'hk' => ['v1',],
'bm' => ['v1',],
'w' => ['v1',],
'm' => ['v1',],
'at' => ['v1',],
'e' => ['v1',],
];


function getPath($array, $key, $path, &$returnArray) {
    if(isset($array[$key]))
    {
        foreach($array[$key] as $v) {
            $newPath = $path.$v.'/';

            $nextPath = getPath($array, $v, $newPath, $returnArray);
            if(!empty($nextPath))
            {
                $returnArray[] = $nextPath;
            }
        }
    } else {
        return $path;
    }
}

$allPaths = array();

getPath($myArray, 'images', '', $allPaths);

echo "<pre>";print_r($allPaths);echo "</pre>";

所以你只想从这个数组中得到
images/g/menu/v1,images/g/submenu/img/e/v1
?例如,什么是
hp
子阵列?!是否要创建动态文件夹链接???与此相同hp是另一个子文件夹那么所有子文件夹是什么?他们有订单吗?你的全部预期产出是多少?所有可能的可构建路径?我期待像images/g/menu/v1 images/g/submenu/img/e/v1 images/hp/cat/kt/v1 images/hp/icons/v1这样的输出…非常感谢ji,这对我很有帮助
Array
(
    [0] => g/menu/v1/
    [1] => g/submenu/img/e/v1/
    [2] => g/submenu/icons/v1/
    [3] => g/icons/v1/
    [4] => hp/cat/kt/v1/
    [5] => hp/cat/hk/v1/
    [6] => hp/cat/bm/v1/
    [7] => hp/cat/w/v1/
    [8] => hp/cat/m/v1/
    [9] => hp/cat/at/v1/
    [10] => hp/cat/e/v1/
    [11] => hp/icons/v1/
    [12] => hp/banners/v1/
)