我有一系列文件夹/路径:我有一系列文件夹/路径: $arr = Array( 0 = Array ( 'name' = 'aaa' ), 1 = Array ( 'name' = 'aaa\bbb' ), 2 = Array ( 'name' = 'aaa\bbb\ccc' ), 3 = Array
php">$arr = Array
(
0 => Array
(
'name' => 'aaa'
),
1 => Array
(
'name' => 'aaa\bbb'
),
2 => Array
(
'name' => 'aaa\bbb\ccc'
),
3 => Array
(
'name' => 'ddd'
)
);
我想将它转换为多维(树状)数组(保持结构:索引/键和值/名称):
aaa
bbb
ccc
ddd
有什么建议和方法吗?解决办法,尝试用如下代码:
$arr = array(
array('name' => 'aaa'),
array('name' => 'aaa\bbb'),
array('name' => 'aaa\bbb\ccc'),
array('name' => 'ddd'),
array('name' => 'ddd\zzz'),
array('name' => 'zzz'),
array('name' => 'ddd\zzz\fff'),
);
$new = array();
$helper = array();
foreach ($arr as $i => $entry) {
$parent =& $new;
/**
* One could use:
* explode(DIRECTORY_SEPARATOR, $entry['name'])
* 编程学习网 topstudy.com.cn
* instead of '\\' if you're dealing with file-structures
*/
foreach ($path = explode('\\', $entry['name']) as $ii => $element) {
$subPath = implode('.', array_slice($path, 0, $ii + 1));
if (isset($helper[$subPath])) {
$parent =& $helper[$subPath];
continue;
}
$parent[$i] = array('name' => $element);
$helper[$subPath] =& $parent[$i];
}
}
print_r($new);
输出结果为:
Array
(
[0] => Array
(
[name] => aaa
[1] => Array
(
[name] => bbb
[2] => Array
(
[name] => ccc
)
)
)
[3] => Array
(
[name] => ddd
[4] => Array
(
[name] => zzz
[6] => Array
(
[name] => fff
)
)
)
[5] => Array
(
[name] => zzz
)
)
织梦狗教程
本文标题为:php要怎么对数组元素进行分组


基础教程推荐
猜你喜欢
- PHP实现生成数据字典功能示例 2022-10-18
- thinkPHP3.2.2框架行为扩展及demo示例 2022-11-07
- php中使用array_filter()函数过滤数组实例讲解 2023-05-19
- PHP使用SMTP邮件服务器发送邮件示例 2022-11-16
- laravel model模型定义实现开启自动管理时间created_at,updated_at 2023-03-02
- PHP实现创建一个RPC服务操作示例 2023-04-01
- PHP数据加密方式梳理介绍 2023-07-03
- TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例 2023-01-19
- TP5 连接多个数据库及使用方法 2023-08-30
- PHP删除数组中指定值的元素常用方法实例分析【4种方法】 2022-11-12