2011-08-30 6 views
0

알고리즘 내부에서 GCD에 액세스하려고했으나 그렇게하지 않으면 이유가 확실하지 않습니다. 여기서 내가 뭘 잘못하고 있니?다른 메서드 내부에서 메서드에 액세스

public function gcd($x,$y) 
    { 
     do { 
      $rest=$x%$y; 
     $x=$y; 
     $y=$rest; 
     } while($rest!==0); 
     return $x; 
    } 

    public function algorithm() 
    { 
     $alpha = array(
      'c' => str_split('bcdfghjklmnpqrstvwxz'), 
      'v' => str_split('aeiouy') 
     ); 
     $i=$k=0; 
     foreach ($this->output as $item) { 
      $cnt = 0; 
      $this->digits[$i] = array(); 
      foreach ($item as $part) { 
       $this->digits[$i][$cnt] = array(); 
       $new = array(); 
       foreach ($part as $str) { 
        $v = count(array_intersect(str_split($str), $alpha['v'])); 
        $c = count(array_intersect(str_split($str), $alpha['c'])); 
        $t = strlen(str_replace(' ', '', $str)); 

        $new = ($cnt == 0) 
         ? array('v' => $v, 'c' => $c, 't' => $t, 'm' => ($t%2) ? $v * 1.5 : $c) 
         : array('v' => $v, 'c' => $c, 't' => $t); 

        $this->digits[$i][$cnt][] = $new; 
       } 
       $cnt++; 
      } 
      $i++; 
     } 
     $h=$a=0; 
     foreach($this->digits as &$etc) { 
      foreach($etc[0] as &$r){ 

       foreach($etc[1] as $k) { 
       foreach($k as $x=>$y) { 
        $tmp[$h] = (gcd($y,$r['t']) != 1) ? ++$a:''; 
       } 
        $tmp[$h] = $r['m']*$a*1.5; 
        $h++; 
        $a=0; 
       }$h=0; 

      $r['f'] = $tmp; 
      $tmp=''; 
      } 

     } 
    foreach($this->digits as &$u){unset($u[1]);} 
    } 
+0

더 빠르고 좋은 답변을 얻으려면 가능한 한 관련성이없는 코드를 제거하고 어떤 줄이 오류를 일으키는 지 명확하게 표시하는 것이 좋습니다. (그 위에, 당신이 스스로 노력을했다는 것을 보여줄 것입니다.) – xtofl

답변

1

당신의 식별자를 사용하여 판단하면 두 가지 기능이 하나의 클래스에 있다고 생각합니다.

$tmp[$h] = (gcd($y,$r['t']) != 1) ? ++$a:''; 

가 있어야한다 : 당신은 this-> GCD 내부 $를 놓치고

$tmp[$h] = ($this->gcd($y,$r['t']) != 1) ? ++$a:''; 
0

...

$this->gcd()? 

그러나 gcd 어떤 멤버 변수를 사용하지 않기 때문에 정말, 그것은 무료로 기능해야한다.

+0

"자유로운 기능"이란 무엇입니까? 그것을 설명하는 마음? – ehime

+0

가장 단순한 함수 - 멤버 함수가 아닌 정적 함수, 익명 또는 람다 함수가 아닌 함수 .... – xtofl

0

은 동일한 개체에 대한 방법을 참조 코드에서 $this->methodname()

을 사용하려면 알고리즘 바로 접근 가능 :

관련 문제