`

Fleaphp 数组辅助文件中 array_to_tree 的bug修正

阅读更多

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的单入口文件详解

    **FleaPHP的单入口文件详解** 在PHP开发框架中,单入口模式是一种常见的设计模式,它主要用于管理和控制应用程序的流程。FleaPHP作为一个轻量级的PHP框架,也采用了这种模式,以此来保证程序的高效性和易于维护。...

    fleaphp中文手册详细版

    Fleaphp的轻量级特性使其在小型项目中表现出色,同时,其灵活的配置和丰富的功能也适用于中大型项目。 二、路由系统 Fleaphp的路由系统允许开发者定义URL到控制器方法的映射,这样可以根据URL请求动态地执行相应的...

    fleaphp核心完整代码

    7. **缓存机制**:为了提高应用性能,Fleaphp内置了缓存系统,支持文件、内存(如APC、Memcached、Redis)等多种缓存方式。通过缓存,可以有效减少对数据库的访问,提升网站响应速度。 8. **错误处理**:Fleaphp有...

    php框架fleaphp

    Fleaphp是一款针对中文开发环境设计的轻量级PHP框架,它在国内PHP开发者社区中享有较高的声誉。作为一款优秀的框架,Fleaphp旨在提供高效、简洁且易于上手的开发工具,帮助开发者快速构建Web应用。下面将详细介绍...

    fleaphp1.7.1524

    8. **自动化工具**:为了提升开发效率,Fleaphp可能带有脚手架或命令行工具,用于快速生成控制器、模型、视图等基础文件结构。 9. **第三方库集成**:像许多PHP框架一样,Fleaphp可能集成了如Smarty、Twig等模板...

    Fleaphp 常用方法.doc

    在FleaPHP开源应用程序开发框架中,有几个关键的系统方法,它们是开发高效Web应用的基础。下面我们将详细探讨这些方法: 1. **FLEA::initWebControls()**: 这个函数用于初始化WebControls,它返回一个`FLEA_...

    fleaphp框架附实例(最新版)

    在Fleaphp中,如何创建和组织视图文件,以及如何将数据从控制器传递到视图进行渲染,是提升用户体验的重要一环。 6. **模板引擎**:Fleaphp可能内置了模板引擎,帮助开发者更好地分离业务逻辑和展示逻辑,减少视图...

    fleaphp框架

    在提供的文件`APM-Express.exe`中,可能是一个用于快速安装或管理FleaPHP项目的工具,比如自动部署、环境检查、依赖安装等。使用此类工具可以加速项目初始化,让开发者更专注于实际的编码工作。 总的来说,FleaPHP...

    fleaphp中文手册

    在apidoc.chm文件中,您可以找到FleaPHP的API文档,包括各个类、方法和函数的详细说明。这份文档是学习和使用FleaPHP的关键资源,它将指导您如何有效地利用框架的功能进行开发。 总的来说,FleaPHP是一个全面的PHP...

    FleaPHP+开发指南

    - **助手对象**:FleaPHP内置了一系列实用的助手对象,如图像验证码生成、文件上传处理等,这些对象独立于框架本身,便于在非FleaPHP环境中使用。 #### 四、FleaPHP的应用场景与展望 - **应用场景**:适合快速...

    FleaPHP 框架学习教程.pdf

    ### FleaPHP框架学习教程知识点概述 #### 一、FleaPHP框架简介 - **特点**:FleaPHP是一款轻量级的PHP框架,旨在帮助开发者快速、轻松地创建应用程序。该框架简单易懂,拥有丰富的示例和中文文档,支持PHP4和PHP5...

    Fleaphp框架使用规范收集.pdf

    Fleaphp框架中,模型类继承自TableDataGateway,这使得模型层可以很方便地执行基本的数据库操作。 5. 视图(View): 视图是用户看到并与之交互的界面,Fleaphp框架使用Smarty模板引擎来实现视图层,这样可以将业务...

    fleaphp 框架实例以及详细使用方法说明

    在本文中,我们将深入探讨Fleaphp框架的核心特性,常见问题及解决方案,以及如何有效地使用这个框架进行项目开发。 1. **框架结构与配置** Fleaphp框架采用MVC(Model-View-Controller)设计模式,使得业务逻辑、...

    fleaphp手册

    fleaphp.chm手册

    fleaphp rolesNameField bug解决方法

    在谈论fleaphp框架中rolesNameField的bug及其解决方案时,首先需要了解fleaphp框架是什么,以及rolesNameField在其中扮演的角色。fleaphp是一个基于PHP语言开发的轻量级MVC框架,它提供了开发小型到中型Web应用的...

    FleaPHP 框架学习教程.zip

    FleaPHP支持模板引擎,允许您使用PHP语法编写视图文件,同时提供了一些便利的辅助函数来简化HTML生成。您可以通过在控制器中传递数据到视图,并在视图中渲染这些数据,实现动态页面。 除了基本的MVC组件,FleaPHP还...

    FleaPHP chm文档

    FleaPHP chm文档,简单实例,框架流程介绍

    FleaPHP中文API手册 chm格式

    学习FleaPHP必备,强烈推荐!

    php.mysql.FLEAPHP.Smarty.正则手册汇总

    `FLEAPHP手册1.chm`为开发者提供了框架的使用指南,包括路由设定、模型构建、视图渲染、控制器操作等,有助于快速理解和应用这个框架。 【Smarty】:Smarty是一个PHP模板引擎,将业务逻辑和显示模板分离,提高代码...

Global site tag (gtag.js) - Google Analytics