【问题标题】:Break String in to multilevel object (or array)将字符串分解为多级对象(或数组)
【发布时间】:2019-03-21 01:30:14
【问题描述】:

我有一个这样的字符串:-

dev/clients/518/aaa/1915/bbb/1/file.pdf

我的目标是能够通过多级对象引用file.pdf

dev->clients->518->aaa->1915->bbb->1

或数组

[dev][clients][518][aaa][1915][bbb][1]

这是来自 AWS S3 的一个键,我试图从中创建一个可导航的结构。我可以爆字符串得到

Array
(
    [0] => dev
    [1] => clients
    [2] => 518
    [3] => aaa
    [4] => 1915
    [5] => bbb
    [6] => 1
    [7] =>file.pdf
)

不知道如何从这里继续前进。这可能会更好地显示我所追求的:-

Array (
    [dev] => Array (
        [clients]  => Array (
            [518] => Array (
                [aaa] => Array (
                    [1915] => Array (
                        [bbb] => Array (
                            [1] => file.pdf
                        )   
                    )
                )   
            )
        )
    )
)

【问题讨论】:

  • “不知道如何从这里继续前进”。向前移动到哪里?你已经实现了你提出的问题
  • 为什么不 [dev/clients/518/aaa/1915/bbb/1] ?
  • 刚刚更新了我的问题以突出显示我正在寻找的结构
  • 要开始,您可能需要前往here

标签: php arrays object explode


【解决方案1】:

您可以使用简单的for-loop

$arr = explode("/", "dev/clients/518/aaa/1915/bbb/1/file.pdf");
$arr = array_reverse($arr); //reverse the order to start from the lowest level
$res = array_shift($arr); //init the result as the last element ("file")
foreach($arr as $e) {
    $tmp[$e] = $res;
    $res = $tmp;
    unset($tmp[$e]); //so $tmp will not contain dragging element
}

您希望的输出将在$res

【讨论】:

  • 谢谢...我很接近,但这是我想去的地方。现在必须将它包装在另一个处理数千个文件的循环中:)
猜你喜欢
  • 1970-01-01
  • 2017-03-02
  • 2021-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多