찾다
백엔드 개발PHP 튜토리얼如何将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那样的结果,可还是不行,望再帮忙指点下。

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Laravel의 플래시 세션 데이터로 작업합니다Laravel의 플래시 세션 데이터로 작업합니다Mar 12, 2025 pm 05:08 PM

Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

PHP 로깅 : PHP 로그 분석을위한 모범 사례PHP 로깅 : PHP 로그 분석을위한 모범 사례Mar 10, 2025 pm 02:32 PM

PHP 로깅은 웹 애플리케이션을 모니터링하고 디버깅하고 중요한 이벤트, 오류 및 런타임 동작을 캡처하는 데 필수적입니다. 시스템 성능에 대한 귀중한 통찰력을 제공하고 문제를 식별하며 더 빠른 문제 해결을 지원합니다.

PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법Mar 14, 2025 am 11:42 AM

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

Laravel 테스트에서 단순화 된 HTTP 응답 조롱Laravel 테스트에서 단순화 된 HTTP 응답 조롱Mar 12, 2025 pm 05:09 PM

Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> ​​'Hello World', 'github.com'=> ​​[ 'foo'=> 'bar'], 'forge.laravel.com'=>

Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트Codecanyon에서 12 개의 최고의 PHP 채팅 스크립트Mar 13, 2025 pm 12:08 PM

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

PHP에서 늦은 정적 결합의 개념을 설명하십시오.PHP에서 늦은 정적 결합의 개념을 설명하십시오.Mar 21, 2025 pm 01:33 PM

기사는 PHP 5.3에 도입 된 PHP의 LSB (Late STATIC BING)에 대해 논의하여 정적 방법의 런타임 해상도가보다 유연한 상속을 요구할 수있게한다. LSB의 실제 응용 프로그램 및 잠재적 성능

프레임 워크 사용자 정의/확장 : 사용자 정의 기능을 추가하는 방법.프레임 워크 사용자 정의/확장 : 사용자 정의 기능을 추가하는 방법.Mar 28, 2025 pm 05:12 PM

이 기사에서는 프레임 워크에 사용자 정의 기능 추가, 아키텍처 이해, 확장 지점 식별 및 통합 및 디버깅을위한 모범 사례에 중점을 둡니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기