如何将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);
(
[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那样的结果,可还是不行,望再帮忙指点下。

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











Alipay PHP ...

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

세션 납치는 다음 단계를 통해 달성 할 수 있습니다. 1. 세션 ID를 얻으십시오. 2. 세션 ID 사용, 3. 세션을 활성 상태로 유지하십시오. PHP에서 세션 납치를 방지하는 방법에는 다음이 포함됩니다. 1. 세션 _regenerate_id () 함수를 사용하여 세션 ID를 재생산합니다. 2. 데이터베이스를 통해 세션 데이터를 저장하십시오.

phpstorm에서 CLI 모드를 디버그하는 방법은 무엇입니까? PHPStorm으로 개발할 때 때때로 CLI (Command Line Interface) 모드에서 PHP를 디버그해야합니다 ...

PHP 개발에서 견고한 원칙의 적용에는 다음이 포함됩니다. 1. 단일 책임 원칙 (SRP) : 각 클래스는 하나의 기능 만 담당합니다. 2. Open and Close Principle (OCP) : 변경은 수정보다는 확장을 통해 달성됩니다. 3. Lisch의 대체 원칙 (LSP) : 서브 클래스는 프로그램 정확도에 영향을 미치지 않고 기본 클래스를 대체 할 수 있습니다. 4. 인터페이스 격리 원리 (ISP) : 의존성 및 사용되지 않은 방법을 피하기 위해 세밀한 인터페이스를 사용하십시오. 5. 의존성 반전 원리 (DIP) : 높고 낮은 수준의 모듈은 추상화에 의존하며 종속성 주입을 통해 구현됩니다.

시스템이 다시 시작된 후 UnixSocket의 권한을 자동으로 설정하는 방법. 시스템이 다시 시작될 때마다 UnixSocket의 권한을 수정하려면 다음 명령을 실행해야합니다.

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

PHP 개발에서 PHP의 CURL 라이브러리를 사용하여 JSON 데이터를 보내면 종종 외부 API와 상호 작용해야합니다. 일반적인 방법 중 하나는 컬 라이브러리를 사용하여 게시물을 보내는 것입니다 ...
