【问题标题】:problem with PHP class function ()PHP类函数()的问题
【发布时间】:2010-05-30 14:59:23
【问题描述】:

这是我在这里的第一个问题,我希望你能帮助我..

我试图通过三种搜索方式(BFS-DFS-IDS)找到河内塔问题的解决方案,因此我使用由 5 个变量定义的“状态”类 whitch,如下所示:

类状态{

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

它还有很多功能,其中之一是 getneighbors(),它应该用状态邻居填充数组 $neighbors,它们来自“状态”类型

这里是函数:

函数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 以及 copy 也被定义了

现在的问题是,当我调用 getneighbors() 时,它返回一个空的 $neighbors 数组

你能告诉我问题吗?

【问题讨论】:

  • 查看更大的声明会很有帮助。 getneighbors() 我在上课吗?什么级别?以上 5 个变量在哪里定义?它们是类变量还是全局变量?编辑:我看到上面的类{},错过了。

标签: php class


【解决方案1】:

您有范围界定问题。 $neighbors 是一个类变量,而不是 PHP 全局变量。凡是提到$neighbors的地方都改成$this-&gt;neighbors

【讨论】:

  • 谢谢你,但输出还是一样的:(任何人都可以帮忙?
  • 您能否更新帖子中的课程,以便我们看到更新后的代码?请逐字发布课程。我不确定 SO 是否“允许”,但也许使用粘贴服务 (pastie.org) 会更好?
猜你喜欢
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 2011-02-09
  • 2020-10-25
  • 2011-09-26
  • 2018-06-04
  • 2011-05-08
  • 1970-01-01
相关资源
最近更新 更多