我有一段看起来像这样的字符串,它定义了我的数组的结构(从JSTree中的选定选项生成):
Dashboard_Tabs_Summary<#> Dashboard_Sections_Default_View<#> Clients_Tabs_Summary<#> Clients_Tabs_Quote 历史和LT;#> Clients_Tabs_Order 历史和LT;#> Clients_Tabs_Notes<#> Clients_Tabs_Contacts<#> Clients_Sections_Default_Create<#> Clients_Sections_Default_View<#> Clients_Sections_Default_Edit<#> Clients_Sections_Default_Delete<#> Dashboard_Tabs<#> Dashboard_Sections_Default<#> Dashboard_Sections<#>控制板LT&;#> Clients_Tabs<#> Clients_Sections_Default<#> Clients_Sections<#>客户端
如果我按<#>
分解这个字符串,我最终得到这些行(按逻辑顺序排序):
Dashboard
Dashboard_Tabs
Dashboard_Tabs_Summary
Dashboard_Sections
Dashboard_Sections_Default
Dashboard_Sections_Default_View
Clients
Clients_Tabs
Clients_Tabs_Summary
Clients_Tabs_Quote History
Clients_Tabs_Order History
Clients_Tabs_Notes
Clients_Tabs_Contacts
Clients_Sections
Clients_Sections_Default
Clients_Sections_Default_Create
Clients_Sections_Default_View
Clients_Sections_Default_Edit
Clients_Sections_Default_Delete
有没有办法从上面进入这样的数组结构:
这是我的尝试,但它的工作不正常:
<?php
$permissions = 'Dashboard_Tabs_Summary<#>Dashboard_Sections_Default_View<#>Clients_Tabs_Summary<#>Clients_Tabs_Quote History<#>Clients_Tabs_Order History<#>Clients_Tabs_Notes<#>Clients_Tabs_Contacts<#>Clients_Sections_Default_Create<#>Clients_Sections_Default_View<#>Clients_Sections_Default_Edit<#>Clients_Sections_Default_Delete<#>Dashboard_Tabs<#>Dashboard_Sections_Default<#>Dashboard_Sections<#>Dashboard<#>Clients_Tabs<#>Clients_Sections_Default<#>Clients_Sections<#>Clients';
$permissions = explode('<#>', $permissions);
$data = [];
foreach ($permissions as $permission) {
$p = explode('_', $permission);
@list($p0, $p1, $p2, $p3) = $p;
switch (sizeof($p))
{
case 4:
$data[$p0][$p1][$p2][$p3] = null;
break;
case 3:
$data[$p0][$p1][$p2] = null;
break;
}
}
echo '<pre>';
print_r($data);
?>
答案 0 :(得分:2)
您可以使用引用来创建嵌套数组:
$data = array();
foreach(explode('<#>', $permissions) as $permission) {
$path = explode('_', $permission);
$temp =& $data;
foreach($path as $key) {
$temp =& $temp[$key];
}
}
print_r($data);