2010-05-30 62 views
1

这是我在这里的第一个问题,我希望你能帮助我..问题PHP类函数()

我试图通过三种搜索方式(BFS-DFS找到河内问题的塔的soloution -ids),所以我使用 “状态” 类whitch由5个变量如本文所定义:

类状态{

var $tower1 = array(); 
var $tower2 = array(); 
var $tower3 = array(); 
var $depth; 
var $neighbors = array(); 

,它也有许多功能其中之一是getneighbors(),它应该填补了数组$邻邦国家的邻居,他们是从类型“状态”

和这里的功能:

功能getneighbors()

{ 

    $temp=$this->copy(); 

    $neighbor1= $this->copy(); 

    $neighbor2= $this->copy(); 

    $neighbor3= $this->copy(); 

    $neighbor4= $this->copy(); 

    $neighbor5= $this->copy(); 

    $neighbor6= $this->copy(); 

    if(!Empty($temp->tower1)) 
    { 

     if(!Empty($neighbor1->tower2)) 
     { 
      if(end($neighbor1->tower1) < end($neighbor1->tower2)) 
      { 
       array_unshift($neighbor1->tower2,array_pop($neighbor1->tower1)); 
       array_push($neighbors,$neighbor1); 
     }} 
     else 
      { 
     array_unshift($neighbor1->tower2, array_pop($neighbor1->tower1));    
      array_push($neighbors,$neighbor1); 
      } 



     if(!Empty($neighbor2->tower3)) 
     { 
      if(end($neighbor2->tower1) < end($neighbor2->tower3)) 
      { array_unshift($neighbor2->tower3, array_pop($neighbor2->tower1)); 
       array_push($neighbors,$neighbor2); 
     }} 


     else 
      { 
     array_unshift($neighbor2->tower3,array_shift($neighbor2->tower1)); 
     array_push($neighbors,$neighbor2); 
      } 

     } 
       if(!Empty($temp->tower2)) 
    { 


     if(!Empty($neighbor3->tower1)) 
     { 

      if(end($neighbor3->tower2) < end($neighbor3->tower1)) 
      { array_unshift($neighbor3->tower1,array_shift($neighbor3->tower2)); 
       array_push($neighbors,$neighbor3); 
     } 

     } 
      else 
      { 
     array_unshift($neighbor3->tower1,array_shift($neighbor3->tower2)); 
     array_push($neighbors,$neighbor3); 

     } 



     if(!Empty($neighbor4->tower3)) 
     { 
      if(end($neighbor4->tower2) < end($neighbor4->tower3)) 
      { array_unshift($neighbor4->tower1,array_shift($neighbor4->tower2)); 
       array_push($neighbors,$neighbor4); 
      } 
     } 
      else{ 
     array_unshift($neighbor4->tower3,array_shift($neighbor4->tower2)); 
      array_push($neighbors,$neighbor4); 
     } 

     } 
      if(!Empty($temp->tower3)) 
    { 


     if(!Empty($neighbor5->tower1)) 
     { 
      if(end($neighbor5->tower3) < end($neighbor5->tower1)) 
      {array_unshift($neighbor5->tower1,array_shift($neighbor5->tower3)); 
      array_push($neighbors,$neighbor5); 
      } 
     } 
      else{ 
     array_unshift($neighbor5->tower1,array_shift($neighbor5->tower3)); 
     array_push($neighbors,$neighbor5);} 



     if(!Empty($neighbor6->tower2)) 
     { 
      if(end($neighbor6->tower3) < end($neighbor6->tower2)) 
      { array_unshift($neighbor6->tower2,array_shift($neighbor6->tower3)); 
      array_push($neighbors,$neighbor6); 
     }} 
      else{ 
     array_unshift($neighbor6->tower2,array_shift($neighbor6->tower3)); 
     array_push($neighbors,$neighbor6);} 

     } 
     return $neighbors; 
} 

注意的toString和equals和复制被定义太

现在的问题是,当我叫getneighbors()返回一个空$邻居阵列

你能认罪s告诉我这个问题?

+0

这将有助于看到更大的声明。 'getneighbors()'在我上课的课上?什么级别?上述5个变量定义了哪些?他们是类变量还是全局变量?编辑:我看到上面的课程{},错过了它。 – 2010-05-30 15:32:24

回答

3

您有一个范围界定问题。 $neighbors是一个类变量,而不是PHP全局变量。您所指的任何地方$neighbors将其更改为$this->neighbors

+0

谢谢 但输出仍然是相同的:( 任何机构可以帮助 – nelly 2010-05-30 18:25:50

+0

你可以更新你的帖子的类,所以我们可以看到更新的代码请张贴类逐字我不知道这是否是?。 '允许'与SO,但也许使用一个pastie服务(pastie.org)会更好? – 2010-05-30 19:37:02