如何创建嵌套层级可动态配置且创建时赋值的嵌套数组?
动态生成多层嵌套数组的PHP实现
可以利用PHP的引用特性,实现根据指定列数组动态构建任意层级的嵌套数组,代码如下:
$data = // 从数据库获取的数据集合 $nested_array = []; $counter = 0; $columns_selected = ['a', 'b', 'c', 'd', 'e']; // 自定义的嵌套层级列数组 foreach ($data as $row) { // 初始化当前层级引用,指向根数组 $current_level = &$nested_array; // 遍历选中列,逐层构建嵌套结构 foreach ($columns_selected as $col) { $col_value = $row->$col; // 若当前层级无该值对应的数组,先初始化空数组 if (!isset($current_level[$col_value])) { $current_level[$col_value] = []; } // 将引用切换到下一层级 $current_level = &$current_level[$col_value]; } // 在最内层设置id值 $current_level['id'] = $counter++; // 释放引用,避免后续循环干扰 unset($current_level); }
代码说明
- 通过引用
$current_level追踪当前嵌套层级,无需手动硬编码每一层的数组访问 - 遍历
$columns_selected时自动创建对应层级的数组键,适配任意长度的列数组 - 最后释放引用是关键操作,防止后续循环中引用指向错误的层级
内容的提问来源于stack exchange,提问作者pileup
相关产品推荐
相关产品推荐

