我有一段看起来像这样的字符串,它定义了我的数组的结构(从 JSTree 中的选定选项生成):
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
如果我将这个字符串分解为 <#>
,我最终得到这些行(按逻辑顺序排序):
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);
?>
最佳答案
您可以使用引用来创建嵌套数组:
$data = array();
foreach(explode('<#>', $permissions) as $permission) {
$path = explode('_', $permission);
$temp =& $data;
foreach($path as $key) {
$temp =& $temp[$key];
}
}
print_r($data);
关于php - 在php中从字符串动态创建多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41860389/