search
HomeBackend DevelopmentPHP Tutorial如何将tree结果输出到文件

菜鸟求助,想实现两项功能,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);
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
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
What data can be stored in a PHP session?What data can be stored in a PHP session?May 02, 2025 am 12:17 AM

PHPsessionscanstorestrings,numbers,arrays,andobjects.1.Strings:textdatalikeusernames.2.Numbers:integersorfloatsforcounters.3.Arrays:listslikeshoppingcarts.4.Objects:complexstructuresthatareserialized.

How do you start a PHP session?How do you start a PHP session?May 02, 2025 am 12:16 AM

TostartaPHPsession,usesession_start()atthescript'sbeginning.1)Placeitbeforeanyoutputtosetthesessioncookie.2)Usesessionsforuserdatalikeloginstatusorshoppingcarts.3)RegeneratesessionIDstopreventfixationattacks.4)Considerusingadatabaseforsessionstoragei

What is session regeneration, and how does it improve security?What is session regeneration, and how does it improve security?May 02, 2025 am 12:15 AM

Session regeneration refers to generating a new session ID and invalidating the old ID when the user performs sensitive operations in case of session fixed attacks. The implementation steps include: 1. Detect sensitive operations, 2. Generate new session ID, 3. Destroy old session ID, 4. Update user-side session information.

What are some performance considerations when using PHP sessions?What are some performance considerations when using PHP sessions?May 02, 2025 am 12:11 AM

PHP sessions have a significant impact on application performance. Optimization methods include: 1. Use a database to store session data to improve response speed; 2. Reduce the use of session data and only store necessary information; 3. Use a non-blocking session processor to improve concurrency capabilities; 4. Adjust the session expiration time to balance user experience and server burden; 5. Use persistent sessions to reduce the number of data read and write times.

How do PHP sessions differ from cookies?How do PHP sessions differ from cookies?May 02, 2025 am 12:03 AM

PHPsessionsareserver-side,whilecookiesareclient-side.1)Sessionsstoredataontheserver,aremoresecure,andhandlelargerdata.2)Cookiesstoredataontheclient,arelesssecure,andlimitedinsize.Usesessionsforsensitivedataandcookiesfornon-sensitive,client-sidedata.

How does PHP identify a user's session?How does PHP identify a user's session?May 01, 2025 am 12:23 AM

PHPidentifiesauser'ssessionusingsessioncookiesandsessionIDs.1)Whensession_start()iscalled,PHPgeneratesauniquesessionIDstoredinacookienamedPHPSESSIDontheuser'sbrowser.2)ThisIDallowsPHPtoretrievesessiondatafromtheserver.

What are some best practices for securing PHP sessions?What are some best practices for securing PHP sessions?May 01, 2025 am 12:22 AM

The security of PHP sessions can be achieved through the following measures: 1. Use session_regenerate_id() to regenerate the session ID when the user logs in or is an important operation. 2. Encrypt the transmission session ID through the HTTPS protocol. 3. Use session_save_path() to specify the secure directory to store session data and set permissions correctly.

Where are PHP session files stored by default?Where are PHP session files stored by default?May 01, 2025 am 12:15 AM

PHPsessionfilesarestoredinthedirectoryspecifiedbysession.save_path,typically/tmponUnix-likesystemsorC:\Windows\TemponWindows.Tocustomizethis:1)Usesession_save_path()tosetacustomdirectory,ensuringit'swritable;2)Verifythecustomdirectoryexistsandiswrita

See all articles

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

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools