PHP sınıfı fonksiyonu ile sorun ()

1 Cevap php

Bu benim ilk soru ve ben bana yardımcı olur umarım ..

Ben üç arama yolları (BFS-DFS-IDS) ile Hanoi sorunun kuleleri soloution bulmaya çalışıyorum işte olarak 5 değişken tarafından tanımlanan whitch I "devlet" sınıfını kullanın:

sınıf devlet {

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

ve aynı zamanda pek çok fonksiyonu bunlardan biri devlet komşularıyla dizi $ komşuları doldurmak gerekiyordu ve onlar tip "devlet" vardır getneighbors () olduğunu var

ve burada fonksiyonu:

fonksiyonu 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;
}

Bu toString not ve eşittir ve kopya çok tanımlanmıştır

şimdi sorun ben getneighbors çağırdığınızda () boş bir $ komşuları bir dizi döndürür olduğunu

Eğer pleas bana sorun söyleyebilirim?

1 Cevap

Sen bir kapsam belirleme sorunu var. $neighbors bir sınıf değişken olup bir PHP küresel. Her yerde $neighbors $this->neighbors bunu değiştirmek için bkz.