2010-05-30 64 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