【问题标题】:Creating directories based on array values根据数组值创建目录
【发布时间】:2017-01-18 11:05:36
【问题描述】:

我从 API 调用中收到如下所示的响应

Array
(
    [_id] => aasdasdasdasdasd
    [created] => 2017-01-16T14:11:54.616Z
    [options] => Array
        (
            [title] => 1
            [data] => Array
                (
                    [0] => Array
                        (
                            [labelName] =>  Date
                            [labelValues] => Array
                                (
                                    [0] => March 2016
                                )

                        )

                    [1] => Array
                        (
                            [labelName] => Title
                            [labelValues] => Array
                                (
                                    [0] => Food
                                )

                        )

                    [2] => Array
                        (
                            [labelName] => Product
                            [labelValues] => Array
                                (
                                    [0] => Rice
                                )

                        )

                )

        )
)

然后我通过执行以下操作来处理响应

$results = array();
foreach ($output['options']['data'] as $data) {
    if (isset($data['labelValues'][0])) {
        $results[$data['labelName']] = $data['labelValues'][0];
    }
}

这给我留下了一些类似的东西

Array
(
    [Date] => March 2016
    [Title] => Food
    [Product] => Rice
)

把它放到一个数组中并不是我的本意,它主要是为了帮助我更好地理解处理原始数据所需的循环。

我的主要目的是根据这些值创建目录。主目录将是日期,其中应该是标题,其中应该是产品。因此,对于上述内容,目录结构应该类似于 2016 > Food > Rice。

为了实现这一点,我想出了以下方法

foreach ($output['options']['data'] as $data) {
    if (isset($data['labelValues'][0])) {
        if($data['labelName'] == 'Date') {
            if (preg_match('/\b\d{4}\b/', $data['labelValues'][0], $matches)) {
                $results[$data['labelName']] = $matches[0];
                if (!file_exists($matches[0])) {
                    mkdir($matches[0], 0777, true);
                }
            }
        }
    }
}

上面的工作很好,并为我创建了日期文件夹。我苦苦挣扎的地方是我现在如何在 Date 文件夹中创建 Title 文件夹,然后在 Title 中创建 Product。

我将如何实现这一目标?

非常感谢

【问题讨论】:

    标签: php arrays directory


    【解决方案1】:

    我喜欢你创建的数组:

    $array = array ( [Date] => March 2016 [Title] => Food [Product] => Rice )

    简单地分解路径:

    mkdir(implode('/', $array), 0777, true);
    

    这将创建所有目录,March 2016/Food/Rice

    【讨论】:

    • 完美。有什么办法可以做正则表达式使它成为 2016 年所以没有月份?
    • 我实际上又看到了一个问题,这意味着我可能需要循环?我需要在最后创建的目录中生成一个图像。
    猜你喜欢
    • 1970-01-01
    • 2022-08-23
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多