Table of Contents
回复讨论(解决方案)
Home Backend Development PHP Tutorial 如何将tree结果输出到文件

如何将tree结果输出到文件

Jun 23, 2016 pm 02:08 PM

菜鸟求助,想实现两项功能,1、将数据库中主要字段spliter_name,up_spliter两项树形结构输出到IE,在此编写了树形输出代码,请给与指教看是否符合要求,2.将数据库中这两项输出到a.txt,结果如a.txt中所示,绞尽脑汁实在力不从心,请各位大神给与指教。以下为数据库、树形输出、欲实现效果等文件,谢谢!
**************************  tb_spliter.sql  **********************

-- phpMyAdmin SQL Dump
-- version 3.5.4
-- http://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2013 年 05 月 01 日 11:02
-- 服务器版本: 5.5.18
-- PHP 版本: 5.4.0RC4

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- 数据库: `oa`
--

-- --------------------------------------------------------

--
-- 表的结构 `tb_spliter`
--

CREATE TABLE IF NOT EXISTS `tb_spliter` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `spliter_name` varchar(50) NOT NULL,
  `spliter_cap` int(4) NOT NULL,
  `spliter_city` varchar(50) NOT NULL,
  `spliter_top_device` varchar(50) NOT NULL,
  `spliter_top_cable` varchar(50) NOT NULL,
  `up_spliter` int(11) NOT NULL,
  `p_id` int(6) NOT NULL,
  `p_name` varchar(50) NOT NULL,
  `i_state` int(1) NOT NULL,
  `complet_date` datetime NOT NULL,
  `project_name` varchar(50) NOT NULL,
  `project_content` text,
  `table_type` int(1) NOT NULL,
  `relate_depart` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=gb2312 COMMENT='分光器表' AUTO_INCREMENT=91 ;

--
-- 转存表中的数据 `tb_spliter`
--

INSERT INTO `tb_spliter` (`id`, `spliter_name`, `spliter_cap`, `spliter_city`, `spliter_top_device`, `spliter_top_cable`, `up_spliter`, `p_id`, `p_name`, `i_state`, `complet_date`, `project_name`, `project_content`, `table_type`, `relate_depart`) VALUES
(81, 'a1', 1, 'xt', 'a', '无', 69, 217, 'hhh', 0, '2013-04-28 00:24:52', '0', '0', 1, 'qd'),
(80, 'a2', 1, 'xt', 'a', '无', 69, 217, 'hhh', 0, '2013-04-28 00:24:52', '0', '0', 1, 'qd'),
(79, 'a3', 1, 'xt', 'a', '无', 69, 217, 'hhh', 0, '2013-04-28 00:24:52', '0', '0', 1, 'qd'),
(78, 'a4', 1, 'xt', 'a', '无', 69, 217, 'hhh', 0, '2013-04-28 00:24:52', '0', '0', 1, 'qd'),
(69, 'a', 1, 'xt', '无', '无', 0, 217, 'hhh', 0, '2013-04-28 00:15:20', '0', '1', 1, 'qh'),
(82, 'b', 1, 'xt', '无', '无', 0, 217, 'hhh', 0, '2013-05-01 10:22:51', '0', '1', 3, 'qh'),
(83, 'b1', 1, 'xt', 'b', '无', 82, 217, 'hhh', 0, '2013-05-01 10:23:53', '0', '0', 3, 'qh'),
(84, 'b2', 1, 'xt', 'b', '无', 82, 217, 'hhh', 0, '2013-05-01 10:23:53', '0', '0', 3, 'qh'),
(85, 'b3', 1, 'xt', 'b', '无', 82, 217, 'hhh', 0, '2013-05-01 10:23:53', '0', '0', 3, 'qh'),
(86, 'b4', 1, 'xt', 'b', '无', 82, 217, 'hhh', 0, '2013-05-01 10:23:53', '0', '0', 3, 'qh'),
(87, 'b5', 1, 'xt', 'b', '无', 82, 217, 'hhh', 0, '2013-05-01 10:23:53', '0', '0', 3, 'qh'),
(88, 'b6', 1, 'xt', 'b', '无', 82, 217, 'hhh', 0, '2013-05-01 10:23:53', '0', '0', 3, 'qh'),
(89, 'b61', 1, 'xt', 'b', '无', 88, 217, 'hhh', 0, '2013-05-01 10:23:53', '0', '0', 3, 'qh'),
(90, 'b62', 1, 'xt', 'b', '无', 88, 217, 'hhh', 0, '2013-05-01 10:23:53', '0', '0', 3, 'qh');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;



********************** tree.php **********************

$filename = 'a.txt';     
    $fff=iconv('gb2312','utf-8',$fff); 
    if (!$handle = fopen($filename, 'w')) {    
         echo "cannot open $filename";    
         exit;    
    }    


include "../conn/conn.php";
   $sql="select * from tb_spliter where up_spliter = '0'";//选择出所有顶级设备
   $result=mysql_query($sql,$conn);
   $m=0;
   while($rows=mysql_fetch_row($result)){
   $sqlstr1="select * from tb_spliter where up_spliter = '".$rows[0]."'"; //判断顶级设备下的一级设备
   $result1=mysql_query($sqlstr1,$conn);
   $num=mysql_num_rows($result1); 
   if(!$num){  //如果不存在一级设备
  echo "\$a=".$rows[1]." ".$m."没有下级
";
     }else{
         echo "\$b=".$rows[1]." ".$m."有下级
";
    list_first($rows[0],$m);  //list_first轮询一级设备
     }
     $m+=1;
    }
       
function list_first($aa,$m){
 include "../conn/conn.php";
     $sql="select * from tb_spliter where up_spliter = '".$aa."'";//list_first轮询一级设备
     $result = mysql_query($sql,$conn);
     while($rows2 = mysql_fetch_row($result)){
     $sqlstr1 = "select * from tb_spliter where up_spliter = '".$rows2[0]."'"; //判断一级设备下是否有分支设备
     $result1 = mysql_query($sqlstr1,$conn);
     $nu = mysql_num_rows($result1);
      if(!$nu){    
         echo $rows2[1]." ".$m."没有下级
";
     }else{
         echo $rows2[1]." ".$m."有下级
";
    list_first($rows2[0],$m);  //list_first轮询设备
     }
     $m+=1;
     }
    }

?>


**********************  a.txt(想要的结果) **********************
a-->a1;
a-->a2;
a-->a3;
a-->a4;
b-->b1;
b-->b2;
b-->b3;
b-->b4;
b-->b5;
b-->b6;
b6-->b61;
b6-->b62;





回复讨论(解决方案)

基本算法

$sql = "select id, up_spliter, spliter_name from tb_spliter order by 2, 1";$rs = mysql_query($sql); $res = array(); //结果数组$ind = array(); //索引数组while($row = mysql_fetch_assoc($rs)) {  list($id, $pid) = array_values($row);   $ind[$id] = $row;  if(isset($ind[$pid])) $ind[$pid]['child'][$id] =& $ind[$id]; //构造索引  if($pid == 0) $res[$id] =& $ind[$id]; //转存根节点组}print_r($res);
Copy after login
Array
(
    [69] => Array
        (
            [id] => 69
            [up_spliter] => 0
            [spliter_name] => a
            [child] => Array
                (
                    [78] => Array
                        (
                            [id] => 78
                            [up_spliter] => 69
                            [spliter_name] => a4
                        )

                    [79] => Array
                        (
                            [id] => 79
                            [up_spliter] => 69
                            [spliter_name] => a3
                        )

                    [80] => Array
                        (
                            [id] => 80
                            [up_spliter] => 69
                            [spliter_name] => a2
                        )

                    [81] => Array
                        (
                            [id] => 81
                            [up_spliter] => 69
                            [spliter_name] => a1
                        )

                )

        )

    [82] => Array
        (
            [id] => 82
            [up_spliter] => 0
            [spliter_name] => b
            [child] => Array
                (
                    [83] => Array
                        (
                            [id] => 83
                            [up_spliter] => 82
                            [spliter_name] => b1
                        )

                    [84] => Array
                        (
                            [id] => 84
                            [up_spliter] => 82
                            [spliter_name] => b2
                        )

                    [85] => Array
                        (
                            [id] => 85
                            [up_spliter] => 82
                            [spliter_name] => b3
                        )

                    [86] => Array
                        (
                            [id] => 86
                            [up_spliter] => 82
                            [spliter_name] => b4
                        )

                    [87] => Array
                        (
                            [id] => 87
                            [up_spliter] => 82
                            [spliter_name] => b5
                        )

                    [88] => Array
                        (
                            [id] => 88
                            [up_spliter] => 82
                            [spliter_name] => b6
                            [child] => Array
                                (
                                    [89] => Array
                                        (
                                            [id] => 89
                                            [up_spliter] => 88
                                            [spliter_name] => b61
                                        )

                                    [90] => Array
                                        (
                                            [id] => 90
                                            [up_spliter] => 88
                                            [spliter_name] => b62
                                        )

                                )

                        )

                )

        )

)

是多维数组
目的在于展现层次

老大,试了老半天,遍历数组想生成 a-a1;a-a2;....如a.txt那样的结果,可还是不行,望再帮忙指点下。

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

Describe the SOLID principles and how they apply to PHP development. Describe the SOLID principles and how they apply to PHP development. Apr 03, 2025 am 12:04 AM

The application of SOLID principle in PHP development includes: 1. Single responsibility principle (SRP): Each class is responsible for only one function. 2. Open and close principle (OCP): Changes are achieved through extension rather than modification. 3. Lisch's Substitution Principle (LSP): Subclasses can replace base classes without affecting program accuracy. 4. Interface isolation principle (ISP): Use fine-grained interfaces to avoid dependencies and unused methods. 5. Dependency inversion principle (DIP): High and low-level modules rely on abstraction and are implemented through dependency injection.

How to automatically set permissions of unixsocket after system restart? How to automatically set permissions of unixsocket after system restart? Mar 31, 2025 pm 11:54 PM

How to automatically set the permissions of unixsocket after the system restarts. Every time the system restarts, we need to execute the following command to modify the permissions of unixsocket: sudo...

Explain the concept of late static binding in PHP. Explain the concept of late static binding in PHP. Mar 21, 2025 pm 01:33 PM

Article discusses late static binding (LSB) in PHP, introduced in PHP 5.3, allowing runtime resolution of static method calls for more flexible inheritance.Main issue: LSB vs. traditional polymorphism; LSB's practical applications and potential perfo

How to debug CLI mode in PHPStorm? How to debug CLI mode in PHPStorm? Apr 01, 2025 pm 02:57 PM

How to debug CLI mode in PHPStorm? When developing with PHPStorm, sometimes we need to debug PHP in command line interface (CLI) mode...

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

How to send a POST request containing JSON data using PHP's cURL library? How to send a POST request containing JSON data using PHP's cURL library? Apr 01, 2025 pm 03:12 PM

Sending JSON data using PHP's cURL library In PHP development, it is often necessary to interact with external APIs. One of the common ways is to use cURL library to send POST�...

See all articles