在PHP中,可以使用递归函数将普通数组转换为无限级数组。下面是一个示例代码:
function arrayToInfinite($array, $parentId = 0) {
$result = array();
foreach ($array as $item) {
if ($item['parent_id'] == $parentId) {
$children = arrayToInfinite($array, $item['id']);
if (!empty($children)) {
$item['children'] = $children;
}
$result[] = $item;
}
}
return $result;
}
// 示例数据
$array = array(
array('id' => 1, 'name' => 'A', 'parent_id' => 0),
array('id' => 2, 'name' => 'B', 'parent_id' => 1),
array('id' => 3, 'name' => 'C', 'parent_id' => 1),
array('id' => 4, 'name' => 'D', 'parent_id' => 2),
array('id' => 5, 'name' => 'E', 'parent_id' => 0),
);
// 转换为无限级数组
$infiniteArray = arrayToInfinite($array);
// 输出结果
print_r($infiniteArray);
这个示例代码将一个包含id
、name
和parent_id
字段的普通数组转换为无限级数组。在递归函数arrayToInfinite
中,我们首先遍历数组中的每个元素,如果元素的parent_id
等于指定的parentId
,则将其添加到结果数组中。然后,我们递归调用arrayToInfinite
函数,将当前元素的id
作为新的parentId
,以查找当前元素的子元素。如果子元素不为空,则将其添加到当前元素的children
字段中。最后,返回结果数组。
运行上述代码,将输出以下结果:
Array
(
[0] => Array
(
[id] => 1
[name] => A
[parent_id] => 0
[children] => Array
(
[0] => Array
(
[id] => 2
[name] => B
[parent_id] => 1
[children] => Array
(
[0] => Array
(
[id] => 4
[name] => D
[parent_id] => 2
)
)
)
[1] => Array
(
[id] => 3
[name] => C
[parent_id] => 1
)
)
)
[1] => Array
(
[id] => 5
[name] => E
[parent_id] => 0
)
)
这样,普通数组就被成功转换为了无限级数组。
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站