Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 - Fatal编程技术网

在PHP中创建动态数组键结构

在PHP中创建动态数组键结构,php,arrays,Php,Arrays,我将文档存储在服务器上,它们的信息(如标题、文件路径、日期、类别等)存储在数据库中。我的目标是能够将文档按类别分组在一起。文档的类别以字符串形式存储在数据库中,如“COVID-19 | Guidence | Mortury Affairs”,我想将其转换为如下数组: [ "COVID-19" => [ "Guidance"=> [ "Mortuary Affairs" => [

我将文档存储在服务器上,它们的信息(如标题、文件路径、日期、类别等)存储在数据库中。我的目标是能够将文档按类别分组在一起。文档的类别以字符串形式存储在数据库中,如
“COVID-19 | Guidence | Mortury Affairs”
,我想将其转换为如下数组:

[
  "COVID-19" => [
    "Guidance"=> [
      "Mortuary Affairs" => [
        // Where the document info will be
      ]
    ]
  ]
]
[
  "COVID-19",
  "Guidance",
  "Mortuary Affairs"
]
第一步是在文档中循环,并用
分隔符分解每个类别:

foreach($all_documents as $document)
{
  $categories = array_map('trim', explode('|', $document['category']));
}
这样做的结果如下:

[
  "COVID-19" => [
    "Guidance"=> [
      "Mortuary Affairs" => [
        // Where the document info will be
      ]
    ]
  ]
]
[
  "COVID-19",
  "Guidance",
  "Mortuary Affairs"
]

然后如何将该数组转换为顶部显示的嵌套数组?

创建带有类别的数组后,您可以迭代这些类别并使用节点引用“深入”结果对象--创建任何缺少的属性,然后引用它们。最后,将文档附加到最深节点的数组中(这样多个文档可以在同一个位置结束):

最后,
$result
将具有所需的层次结构。

另请参见