唠叨帮忙看看这个代码在PHP5上怎么提示错误 在PHP4上运行正常

haihaiff 2006-10-19 04:08:19
真不想麻烦你了 但是我搞了老半天 一点头续都没有 老说什么数组错误
<?php
class TreeMenu
{
var $tree = array();
var $expAND = array();
var $visible = array();
var $levels = array();
var $explevels = array();
var $urlparams = array();
var $maxlevel = 0;
var $i = 0;
var $urlparam;
var $script;
var $layer= 1;
var $img_expAND = "treemenu/tree_expAND.png";
var $img_collapse = "treemenu/tree_collapse.png";


function treemenu($urlparam, $nodefile = ""){

$this->script = isset($GLOBALS["PATH_INFO"])? $GLOBALS["PATH_INFO"] : $GLOBALS["SCRIPT_NAME"];
$this->urlparam = "tmv".$urlparam;

//reset($GLOBALS["HTTP_GET_VARS"]);
while (list($key,) = each ($GLOBALS["HTTP_GET_VARS"])){
//$this->urlparams[] = $key;
$this->urlparams = $_GET;
}
if (!empty($nodefile)) $this->loadTreeFROMFile($nodefile);

}

function createMenu($path) {
if ($handle = opendir($path)) {
while (false !== ($file= readdir($handle))) {
if ($file != "." && $file != "..") {
if(is_dir($path."/".$file)) {
$this->layer++;
$this->addNode($this->layer, $file.$level);
$this->createMenu($path."/".$file);
$this->layer--;
}
}
}
closedir($handle);
}
}

function addNode($level, $text, $link = "", $target = ""){
$this->tree[$this->i][0] = $level;
$this->tree[$this->i][1] = "<nobr>".$text."</nobr>";
$this->tree[$this->i][2] = $link;
$this->tree[$this->i][3] = $target;
$this->tree[$this->i][4] = 0;

if ($this->tree[$this->i][0] > $this->maxlevel) $this->maxlevel = $this->tree[$this->i][0];

$this->expAND[$this->i]=0;
$this->visible[$this->i]=0;
$this->levels[$this->i]=0;

$this->i++;
}

function loadTreeFROMFile($nodefile){
$fd = fopen($nodefile, "r");
if ($fd == 0) die($this->script." : Unable to open file ".$nodefile);
while ($buffer = fgets($fd, 4096)){
$level = strspn($buffer,".");
$node = explode("|", rtrim(substr($buffer,$level)));
$text = $node[0];
$link = $node[1];
$target = $node[2];
$this->addNode($level, $text, $link, $target);
}
fclose($fd);
}

function loadTreeFormString($text) {
if($text!= "") {
$line= explode("", $text);
$i= 0;
while ($line[$i]!= "") { //读取一行
$level = strspn($line[$i], ".");
$node = explode("|", rtrim(substr($line[$i],$level)));
$text = $node[0];
$link = $node[1];
$target = $node[2];
$this->addNode($level, $text, $link, $target);
$i++;
}
}
}

function setExpANDedNodesFROMURL(){
if (!empty($GLOBALS[$this->urlparam])) $this->explevels = explode("|",$GLOBALS[$this->urlparam]);
$this->setExpANDedNodes();
}

function setExpANDedNodes(){
$i=0;
while($i<count($this->explevels)){
$this->expAND[$this->explevels[$i]]=1;
$i++;
}
}

function setEndNodes(){
$lastlevel=$this->maxlevel;
for ($i=count($this->tree)-1; $i>=0; $i--){
if ( $this->tree[$i][0] < $lastlevel ){
for ($j=$this->tree[$i][0]+1; $j <= $this->maxlevel; $j++){
$this->levels[$j]=0;
}
}

if ( $this->levels[$this->tree[$i][0]]==0 ){
$this->levels[$this->tree[$i][0]]=1;
$this->tree[$i][4]=1;
} else {
$this->tree[$i][4]=0;
}
$lastlevel=$this->tree[$i][0];
}
}

function setVisibleNodes(){
// all root nodes are always visible
for ($i=0; $i < count($this->tree); $i++){
if ($this->tree[$i][0]==1){
$this->visible[$i]=1;
}
}

for ($i=0; $i < count($this->explevels); $i++){
$n = $this->explevels[$i];
if ( ($this->visible[$n]==1) && ($this->expAND[$n]==1) ){
$j=$n+1;
while ( $this->tree[$j][0] > $this->tree[$n][0] ){
if ($this->tree[$j][0]==$this->tree[$n][0]+1) $this->visible[$j]=1;
$j++;
}
}
}
}

function show(){
echo $this->getHTMLTable();
}


function getHTMLTable(){

$this->setExpANDedNodesFROMURL();
$this->setEndNodes();
$this->setVisibleNodes();

/*********************************************
* Output nicely formatted tree *
*********************************************/

for ($i=0; $i<$this->maxlevel; $i++) $this->levels[$i]=1;

$this->maxlevel++;

$html = "<table cellspacing=0 cellpadding=0 border=0 cols=".($this->maxlevel+3)." width=100%>\n";
$html .= "<tr>";

for ($i=0; $i<($this->maxlevel+3); $i++) $html .= "<td width=16></td>";
$html .= "<td width=100%> </td></tr>\n";

$cnt=0;

while ($cnt<count($this->tree)){
if ($this->visible[$cnt]){

/****************************************
* start new row *
****************************************/

$html .= "<tr>";

/****************************************
* vertical lines FROM higher levels *
****************************************/

$i=0;
while ($i<$this->tree[$cnt][0]-1){
if ($this->levels[$i]==1){
$html .= "<td><a name='$cnt'></a><img src=\"".$this->img_line."\"></td>";
} else {
$html .= "<td><a name='$cnt'></a><img src=\"".$this->img_spc."\"></td>";
}
$i++;
}

/****************************************
* corner at end of subtree OR t-split *
****************************************/

if ($this->tree[$cnt][4]==1){
$html .= "<td><img src=\"".$this->img_end."\"></td>";
$this->levels[$this->tree[$cnt][0]-1]=0;
} else {
$html .= "<td><img src=\"".$this->img_split."\"></td>";
$this->levels[$this->tree[$cnt][0]-1]=1;
}

/********************************************
* Node (with subtree) OR Leaf (no subtree) *
********************************************/

if ($this->tree[$cnt+1][0]>$this->tree[$cnt][0]){

/****************************************
* Create expAND/collapse parameters *
****************************************/

//reset($this->urlparams);
while (list(,$value) = each ($this->urlparams)){
if (!empty($GLOBALS[$value]) && $value <> $this->urlparam) {
$otherparams .= $value."=".$GLOBALS[$value]."&";
}
}

$params="?".$otherparams.$this->urlparam."=";

$i=0;
while($i<count($this->expAND)){
if ( ($this->expAND[$i]==1)
&& ($cnt!=$i)
|| ($this->expAND[$i]==0 && $cnt==$i)){

$params=$params.$i;
$params=$params."|";
}
$i++;
}

$otherparams = "";

if ($this->expAND[$cnt]==0){
$html .= "<td><a href=\"".$this->script.$params."#$cnt\"><img src=\"".$this->img_expAND."\" border=no></a></td>";
} else {
$html .= "<td><a href=\"".$this->script.$params."#$cnt\"><img src=\"".$this->img_collapse."\" border=no></a></td>";
}

} else {

/*************************
* Tree Leaf *
*************************/

$html .= "<td><img src=\"".$this->img_leaf."\"></td>";
}

/****************************************
* output item text *
****************************************/

if ($this->tree[$cnt][2]==""){
$html .= "<td colspan=".($this->maxlevel-$this->tree[$cnt][0]).">".$this->tree[$cnt][1]."</td>";
} else {
$html .= "<td colspan=".($this->maxlevel-$this->tree[$cnt][0])."><a href=\"".$this->tree[$cnt][2]."\" target=\"".$this->tree[$cnt][3]."\">".$this->tree[$cnt][1]."</a></td>";
}

/****************************************
* end row *
****************************************/

$html .= "</tr>\n";
}

$cnt++;
}

$html .= "</table>\n";
return $html;
}
}


?>
...全文
234 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
an9ryfr09 2006-10-20
  • 打赏
  • 举报
回复
我这里得到的只是notice和warning。
你在程序顶部加入ini_set('display_errors','off');试试看能否运行
haihaiff 2006-10-20
  • 打赏
  • 举报
回复
我知道我不应该发那么长的贴子 但是等了老半天也灭有人回答 叫我删贴也不是 给分也不是
NND
haihaiff 2006-10-19
  • 打赏
  • 举报
回复
<?php
include "treemenu.inc";
$tree = new treemenu("a");
$tree->addNode(1, "grANDpa");
$tree->addNode(2, "pa");
$tree->addNode(3, "son");
$tree->addNode(2, "uncle");
$tree->loadTreeFROMFile("demomenu.txt");

$tree->show();
?>
就是这样调用的啊
an9ryfr09 2006-10-19
  • 打赏
  • 举报
回复
你是不是调用的时候传值错误?这个类本身没有语法错误
xuzuning 2006-10-19
  • 打赏
  • 举报
回复
你是如何调用的
Sablog-X是一个采用PHP和MySQL构建的博客系统.作为Sablog的后继产品,Sablog-X在代码质量,运行效率,负载能力,安全等级,功能可操控性和权限严密性等方面都在原有的基础上,更上一层楼.凭借Sablog-X作者7年多的安全技术经验,4年的PHP开发经验,强于创新,追求完美的设计理念,使得Sablog-X已获得业内越来越多专家和用户的认可. 今天怀着忐忑的心情,唱着忐忑,冒死发布2.0版本。 发布这一刻,我突然觉得2.0仅仅比1.6人性化一点,好用一点,数据结构科学一点。其实进步似乎不是太多。只是为了实现自己曾经吹过的牛B。硬着头皮发布了。 这个版本跨度比较大,我是指年份,所以具体有什么改进,还是要靠大家自己去体会了。我就记得改了附件上传的方式啦,评论嵌套啦。其他的真的没什么印象了,因为是我久久改点,又没什么记录。或者是记录已经被删除了。 这个版本我废除了普通的上传附件的方式,采用SWF的上传,可以多选文件。普通的POST上传代码还留着。非常乱。但是已经是没效果了的。在这个个人独立博客已经被微博取代的年代。sablog-x已经无法和其他博客程序争夺市场份额了。所以我没必要去考虑小白的感受和系统环境。至于你们用得正常不正常。反正我是正常了。等再过一段时间,我直接采用HTML5上传了。SWF的都废除掉。 这段时间牛B吹得轰轰响,说春节前后发布,推到15以后,又推到了现在。是有原因的,因为哥结婚了。装修房子、婚庆。忙得一B。所以实际用在程序的时间和精力并不多。多亏Sablog非官方群(29590967)里的兄弟义务测试,如果有BUG,大家可以在群里和我说。或者给我发邮件。或者留下评论,其实论坛我已经几年没看了。我都想删掉论坛了。没时间管理。论坛留给大家去自己交流吧。 尼玛一不小心唠叨了这么多。感谢你们看完我唠叨。废话少说。发布!焦急并紧张的看着浏览器的进度条,心里还在想,这算得上是正式版么?我没有命名测试版,也没有命名正式版。你们自己看着办吧。里面1.6到2.0的升级程序也有了。自己去摸索吧。
PHPWindForums(php+mysql)高速论坛程序(gbk,big5,utf-8) PHPwind系列论坛是一套采用php+mysql数据库方式运行并可生成html页面的全新且完善的强大系统。产品支持多种编码选择:GBK,BIG5,及UTF8,支持各种语言文字。我们希望作为一个开源、共享的软件,PHPWind可以以其流畅的速度与高负载能力激起各位加入PHPWind阵营的热情,并共同打造专业品牌PHPWind.Net! PHPwindV7.3.2,是继PHPWind7.0之后的又一大创新之作。系统在传统论坛+社区模式的基础上又新增了“圈子”模式,站长可以根据个人喜好或实际情况在后台进行设置。新增的“圈子”模式,以及日记等功能,以原论坛体系为基础的应用,在传统论坛系统中,融入了更多可自定义的规则,以促进论坛成员之间的交互联系。 1.好友动态:显示好友在站内的一切动态,时刻关注好友,加深对好友的了解。 2.日记与记录:可以把日记写在论坛里,增加了互动,记录功能还可以和好友唠叨一下 3.相册:用相册记录自己的生活点滴,并共享于好友之间。让交互显得生动形象和具体。 4.分享:分享网页,视频,音乐,flash,好友等资源,看看最近都在流行些什么。 5.群组:用户可自己创建及加入不同类型的群组,邀请更多好友加入。在这里,菜鸟异或大虾,都可以对生活中的某些共同爱好或兴趣发起讨论,交流经验。 6.可能认识的人:将好友的好友推荐给你,扩充好友网络。 7.个人空间:显示自己的所有动作,让好友们知道你最近都做了什么。保持并加深好友间的了解度。 8.底部工具条,可及时发现在线好友并且可以及时发消息给好友,及时查阅最新短消息,及一些常用功能快捷通道。 PHPwindV7.3.2,从细节处着手新增后台管理操作记录功能、邮件检测功能、图片缩略预览、版主管理记录、重要页面(如帖子阅读页)用户信息弹出的内容、水印预览...等等众多功能,将带给大家良好的用户体验。 更多的功能期待你的发现,也可以前往PHPWind黑板报看新功能展示. 如果您在使用中遇到问题,可以前往PHPWind讨论区发帖询问,工作日官方技术人员提供解答! PHPWindForums下载地址:http://www.phpwind.com/download.php

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧