将平面数组列表中的值添加到单个嵌套数组

时间:2015-05-22 01:41:16

标签: php arrays multidimensional-array associative-array

PHP Noob在我的脑海里。

我有一个文件列表脚本,它检查目录并生成一系列文件路径。他们看起来或多或少是这样的:

2014/1Q/ES/PDFs/141QES_01.pdf

我想遍历列表(它是一个很长的列表)并构建一个嵌套的关联数组或对象,我可以从中创建一个带有下载链接的有组织的文件树。问题是我不希望我的方法特定于此特定站点的路径结构,我想根据文件路径中的目录结构动态构建它,以便我可以在具有类似需求的其他站点上使用它

$results = array(
    '2014' => array(
        '1Q' => array(
            'ES' => array(
                'PDFs' => array(
                    '141QES_01.pdf',
                    '141QES_02.pdf',
                    ...
                )
            ),
            'SE' => array(
                'PDFs' => array(
                    '141QSE_01.pdf',
                    '141QSE_02.pdf',
                    ...
                )
            ),
            ...
        ),
        '2Q' => array(
            'ES' => array(
                'PDFs' => array(
                    '141QES_01.pdf',
                    '141QES_02.pdf',
                    ...
                )
            ),
            'SE' => array(
                'PDFs' => array(
                    '141QSE_01.pdf',
                    '141QSE_02.pdf',
                    ...
                )
            ),
            ...
        )...
    ),
    '2015' => array(
        ...
    )
)

杀死我的是我可以将路径分解为包含我需要的确切密钥和文件名的数组,但我不能为我的生活找出如何将该平面阵列注入较大的关联数组。我打赌它比我制作它简单得多,所以我可以用一些智慧。如果我是愚蠢的,我不介意听到它。

1 个答案:

答案 0 :(得分:0)

也许我在这里误解了一些内容,但这里是你如何为文件2014/1Q/ES/PDFs/141QES_03.pdf

的PDF数组添加值
$results = array(
        '2014' => array(
            '1Q' => array(
                'ES' => array(
                    'PDFs' => array(
                        '141QES_01.pdf',
                        '141QES_02.pdf'

                    )
                ),
                'SE' => array(
                    'PDFs' => array(
                        '141QSE_01.pdf',
                        '141QSE_02.pdf',

                    )
                )

            ),
            '2Q' => array(
                'ES' => array(
                    'PDFs' => array(
                        '141QES_01.pdf',
                        '141QES_02.pdf',

                    )
                ),
                'SE' => array(
                    'PDFs' => array(
                        '141QSE_01.pdf',
                        '141QSE_02.pdf',

                    )
                )

            )
        ));

广告代码:

 //insert value
    $tmp = '2014/1Q/ES/PDFs/141QES_03.pdf';
    $tmpArr = explode('/',$tmp);
    $results[$tmpArr[0]][$tmpArr[1]][$tmpArr[2]][$tmpArr[3]][]=$tmpArr[4];

    var_dump($results);

输出:

array(1) {
  [2014]=>
  array(2) {
    ["1Q"]=>
    array(2) {
      ["ES"]=>
      array(1) {
        ["PDFs"]=>
        array(3) {
          [0]=>
          string(13) "141QES_01.pdf"
          [1]=>
          string(13) "141QES_02.pdf"
          [2]=>
          string(13) "141QES_03.pdf"
        }
      }...