FLEA/FLEA/Helper/Array.php
源代码如下:

function array_to_tree($arr, $fid, $fparent = 'parent_id',
$fchildrens = 'childrens', $returnReferences = false)
{
$pkvRefs = array();
foreach ($arr as $offset => $row) {
$pkvRefs[$row[$fid]] =& $arr[$offset];
}
$tree = array();
foreach ($arr as $offset => $row) {
$parentId = $row[$fparent];
if ($parentId) {
if (!isset($pkvRefs[$parentId])) {continue; }
$parent =& $pkvRefs[$parentId];//1
$parent[$fchildrens][] =& $arr[$offset];   //2
} else {
$tree[] =& $arr[$offset];
}
}
if ($returnReferences) {
return array('tree' => $tree, 'refs' => $pkvRefs);
} else {
return $tree;
}
}

加注释的这两行有错误...
里面 $parent 操作之后未进行其它的操作,估计是笔误,将其改为 $tree即可

更改后的代码如下

/**
* 将一个平面的二维数组按照指定的字段转换为树状结构
*
* 当 $returnReferences 参数为 true 时,返回结果的 tree 字段为树,refs 字段则为节点引用。
* 利用返回的节点引用,可以很方便的获取包含以任意节点为根的子树。
*
* @param array $arr 原始数据
* @param string $fid 节点ID字段名
* @param string $fparent 节点父ID字段名
* @param string $fchildrens 保存子节点的字段名
* @param boolean $returnReferences 是否在返回结果中包含节点引用
*
* return array
*/
function array_to_tree($arr, $fid, $fparent = 'parent_id',
$fchildrens = 'childrens', $returnReferences = false)
{
$pkvRefs = array();
foreach ($arr as $offset => $row) {
$pkvRefs[$row[$fid]] =& $arr[$offset];
}
$tree = array();
foreach ($arr as $offset => $row) {
$parentId = $row[$fparent];
if ($parentId) {
if (!isset($pkvRefs[$parentId])) {continue; }
$tree =& $pkvRefs[$parentId];
$tree[$fchildrens][] =& $arr[$offset];
} else {
$tree[] =& $arr[$offset];
}
}
if ($returnReferences) {
return array('tree' => $tree, 'refs' => $pkvRefs);
} else {
return $tree;
}
}

修改之后,结果正确,否则基本均为空数组

Fleaphp 数组辅助文件中 array_to_tree 的bug修正相关推荐

  1. c语言从txt中读取二维坐标,C语言二维数组在文件中读写的问题,谢谢

    已结贴√ 问题点数:10 回复次数:4 C语言二维数组在文件中读写的问题,谢谢 这是一个用二位数组写的五子棋小游戏的代码,我的思路是通过键盘输入坐标显示棋子,当输0 0时保存棋盘并结束游戏,下一次进入 ...

  2. java int数组写入文件中_Java程序将int数组写入文件

    这是我们的文件-FileWriter writer = new FileWriter("E:/demo.txt"); 现在,考虑一个整数数组-Integer arr[] = { 1 ...

  3. PHP保存数组到文件中的方法

    ThinkPHP自3.1以后的版本,F函数保存数组时先序列化后再保存到文件中,因为我需要使用C方法来读取自定义配置文件,故需要把PHP数组保存到文件中以便C方法读取,PHP保存数组到文件的方法如下: ...

  4. java对象流定义_Java 对象流的用法,将自定义类数组写入文件中

    FileInputStream和FileOutputStream可以将类,数组,等写入如文件并读取. public class UserList implements Serializable{ pu ...

  5. 文件中数组的最大值及其对应的最小下标

    2019年春季学期第二周作业 基础作业 请在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始).并将最大值和对应的最小下标数值写入文件.  输入: 请建立以自 ...

  6. java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法...

    1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...

  7. (用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug修正...

    原文:(用微信扫的静态链接二维码)微信native支付模式官方提供的demo文件中的几个bug修正 native支付模式一demo(用微信扫的静态链接二维码)BUG修复,一共4个BUG 1.nativ ...

  8. React 组件js文件中如何引入其他的js 文件数组

    在编写react 组件,特别是表格的过程中,我个人是最看不得,整个js文件感觉很多的内容,而且数组,函数,html代码都有,整体看起来分邋遢,我使用的是antd的Table 来渲染表格 我们看这样的一 ...

  9. OC中的数组,常使用的函数,怎样将字符串写到文件中,将数组写到文件中

    现在我要解决的问题是什么,怎样将字符串写到文件中 NSString *str1=@"Hello World";//首先是定义一个字符串,也就是要操作的字符串 NSString *f ...

最新文章

  1. python构建cnn图片匹配_tensorflow搭建cnn人脸识别训练+识别代码(python)
  2. Box2dの自定义多边形
  3. python导入csv文件-Python从CSV文件导入数据和生成简单图表
  4. 更新android应用到最新版本
  5. Linux 命令之 eval -- 对参数执行两次解释
  6. java高分面试指南:java定时删除文件
  7. Windows守护进程简单示例
  8. HTML学习二_HTML常用的行级标签,常用实体字符及表单标签
  9. java循环输入_【图文+视频新手也友好】Java一维数组详细讲解(内含练习题答案+详解彩蛋喔~)...
  10. cmd命令窗口mysql查询表数据命令行_cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据)...
  11. 从 0 到 70%:Chrome 上位揭秘!
  12. 【分享】小米MIUI免root一键删除系统内置软件
  13. Mugeda(木疙瘩)H5案例课—H5酷炫特效制作-岑远科-专题视频课程
  14. 2021牛客暑期多校训练营10 F.Train Wreck(栈,并查集,优先队列,贪心)
  15. eNSP路由器连接外网
  16. B站手机APP缓存视频(m4s)转换为mp4格式
  17. 解决tuple index out of range
  18. http状态码-504
  19. 【C++】1066:满足条件的数累加(信息学奥赛)
  20. 旅行:拉萨“艳遇墙”:最容易发生艳遇的地方!

热门文章

  1. SEO技巧:Meta标签详解
  2. 从四个数字中选出三个,一共有多少组合?不重复的
  3. 如何通过Chrome查看网站登录 Cookie 信息
  4. 复频域求零输入响应_零输入响应是齐次解的一部分
  5. 【代数之美】线性方程组Ax=0的求解方法
  6. 数据分析——用户粘性指标 DAU/MAU
  7. 数据分析利器 —— 列式储存数据库
  8. 室内导航--机器视觉、ROS、Goseek(二)Ubuntu 20.04 LTS 准备
  9. 表值函数和标量值函数
  10. 空三匹配和密集匹配的区别与联系