使用递归将基于值的子项展平PHP数组(在这方面浪费了一个小时!)
我正在尝试建立一个导航菜单。我正在接收一个结构如下的阵列:使用递归将基于值的子项展平PHP数组(在这方面浪费了一个小时!),php,arrays,recursion,multidimensional-array,Php,Arrays,Recursion,Multidimensional Array,我正在尝试建立一个导航菜单。我正在接收一个结构如下的阵列: [ [ Title = A Sub items = [ Title = B Sub items = [ Title = C ] ] ], [ Title = A Sub items = [ Title = B Sub items = [ Title = D ] ] ],
[
[
Title = A
Sub items = [
Title = B
Sub items = [
Title = C
]
]
],
[
Title = A
Sub items = [
Title = B
Sub items = [
Title = D
]
]
],
]
[
Title = A
Sub items = [
Title = B
Sub items = [
Title = C,
Title = D
]
]
]
我需要把它做成这样:
[
[
Title = A
Sub items = [
Title = B
Sub items = [
Title = C
]
]
],
[
Title = A
Sub items = [
Title = B
Sub items = [
Title = D
]
]
],
]
[
Title = A
Sub items = [
Title = B
Sub items = [
Title = C,
Title = D
]
]
]
我在下面列出了我的输入和期望的输出。这件事让我毛骨悚然。我试图使用递归,但遇到了一些问题,到处都是无限循环。如果您能帮助我们找到解决这个问题的好方法,我们将不胜感激
输入:
Array
(
[0] => Array
(
[title] => Dashboard
[path] => dashboard/
)
[1] => Array
(
[title] => Settings
[path] => settings/
[subItems] => Array
(
[0] => Array
(
[title] => Instances
[path] => settings/instances/
[subItems] => Array
(
[0] => Array
(
[title] => Add an Instance
[path] => settings/instances/add-an-instance/
)
)
)
[1] => Array
(
[title] => Modules
[path] => settings/modules/
)
[2] => Array
(
[title] => Administrator
[path] => settings/administrator/
[subItems] => Array
(
[0] => Array
(
[title] => Change Password
[path] => settings/administrator/change-password/
)
)
)
)
)
[2] => Array
(
[title] => Settings
[subItems] => Array
(
[0] => Array
(
[title] => Routes
[path] => modules/routes/settings/routes/
)
)
)
[3] => Array
(
[title] => Settings
[subItems] => Array
(
[0] => Array
(
[title] => Cookies
[path] => modules/cookies/settings/cookies/
)
)
)
[4] => Array
(
[title] => Settings
[subItems] => Array
(
[0] => Array
(
[title] => Sessions
[path] => modules/sessions/settings/sessions/
)
)
)
[5] => Array
(
[title] => Settings
[subItems] => Array
(
[0] => Array
(
[title] => Databases
[path] => modules/databases/settings/databases/
[subItems] => Array
(
[0] => Array
(
[title] => Add a Database
[path] => modules/databases/settings/databases/add-a-database/
)
)
)
)
)
[6] => Array
(
[title] => Settings
[subItems] => Array
(
[0] => Array
(
[title] => Models
[path] => modules/models/settings/models/
)
)
)
[7] => Array
(
[title] => Settings
[subItems] => Array
(
[0] => Array
(
[title] => Users and Accounts
[path] => modules/users-and-accounts/settings/users-and-accounts/
)
)
)
[8] => Array
(
[title] => Users and Accounts
[subItems] => Array
(
[0] => Array
(
[title] => Users
[path] => modules/users-and-accounts/users/
[subItems] => Array
(
[0] => Array
(
[title] => Add a User
[path] => modules/users-and-accounts/users/add-a-user/
)
)
)
[1] => Array
(
[title] => Accounts
[path] => modules/users-and-accounts/accounts/
[subItems] => Array
(
[0] => Array
(
[title] => Add an Account
[path] => modules/users-and-accounts/accounts/add-an-account/
)
[1] => Array
(
[title] => Account Types
[path] => modules/users-and-accounts/accounts/account-types/
[subItems] => Array
(
[0] => Array
(
[title] => Add an Account Type
[path] => modules/users-and-accounts/accounts/account-types/add-an-account-type/
)
)
)
)
)
)
)
)
输出:
Array
(
[0] => Array
(
[title] => Dashboard
[path] => dashboard/
)
[1] => Array
(
[title] => Settings
[path] => settings/
[subItems] => Array
(
[0] => Array
(
[title] => Instances
[path] => settings/instances/
[subItems] => Array
(
[0] => Array
(
[title] => Add an Instance
[path] => settings/instances/add-an-instance/
)
)
)
[1] => Array
(
[title] => Modules
[path] => settings/modules/
)
[2] => Array
(
[title] => Administrator
[path] => settings/administrator/
[subItems] => Array
(
[0] => Array
(
[title] => Change Password
[path] => settings/administrator/change-password/
)
)
)
[3] => Array
(
[title] => Routes
[path] => modules/routes/settings/routes/
)
[4] => Array
(
[title] => Cookies
[path] => modules/cookies/settings/cookies/
)
[5] => Array
(
[title] => Sessions
[path] => modules/sessions/settings/sessions/
)
[6] => Array
(
[title] => Databases
[path] => modules/databases/settings/databases/
[subItems] => Array
(
[0] => Array
(
[title] => Add a Database
[path] => modules/databases/settings/databases/add-a-database/
)
)
)
[7] => Array
(
[title] => Models
[path] => modules/models/settings/models/
)
[8] => Array
(
[title] => Users and Accounts
[path] => modules/users-and-accounts/settings/users-and-accounts/
)
)
)
[2] => Array
(
[title] => Users and Accounts
[subItems] => Array
(
[0] => Array
(
[title] => Users
[path] => modules/users-and-accounts/users/
[subItems] => Array
(
[0] => Array
(
[title] => Add a User
[path] => modules/users-and-accounts/users/add-a-user/
)
)
)
[1] => Array
(
[title] => Accounts
[path] => modules/users-and-accounts/accounts/
[subItems] => Array
(
[0] => Array
(
[title] => Add an Account
[path] => modules/users-and-accounts/accounts/add-an-account/
)
[1] => Array
(
[title] => Account Types
[path] => modules/users-and-accounts/accounts/account-types/
[subItems] => Array
(
[0] => Array
(
[title] => Add an Account Type
[path] => modules/users-and-accounts/accounts/account-types/add-an-account-type/
)
)
)
)
)
)
)
)
你能说得更清楚些吗?阵列之间的差异对我来说并不明显。更新了我的问题以显示更清晰的细节-感谢各位的提醒再次更新,使其更加清晰。=]