2010-04-24 2 views
4

이 클래스를 실행하는 방법을 알려주십시오. (120)PHP에서 같은 메서드 내에서 메서드를 호출하는 데 문제가 있습니까?

<?php 
    class Test 
    { 
     function readnumber($num, $depth) 
     { 
      $num = (int)$num; 
      $retval =""; 

      if ($num < 0) // if it's any other negative, just flip it and call again 

       return "negative " + readnumber(-$num, 0); 
      if ($num > 99) // 100 and above 
      { 
       if ($num > 999) // 1000 and higher 
        $retval .= readnumber($num/1000, $depth+3); 
       $num %= 1000; // now we just need the last three digits 
       if ($num > 99) // as long as the first digit is not zero 
        $retval .= readnumber($num/100, 2)." hundred\n"; 
       $retval .=readnumber($num%100, 1); // our last two digits      
      } 
      else // from 0 to 99 
      { 
       $mod = floor($num/10); 
       if ($mod == 0) // ones place 
       { 
        if ($num == 1) $retval.="one"; 
        else if ($num == 2) $retval.="two"; 
        else if ($num == 3) $retval.="three"; 
        else if ($num == 4) $retval.="four"; 
        else if ($num == 5) $retval.="five"; 
        else if ($num == 6) $retval.="six"; 
        else if ($num == 7) $retval.="seven"; 
        else if ($num == 8) $retval.="eight"; 
        else if ($num == 9) $retval.="nine"; 
       } 
       else if ($mod == 1) // if there's a one in the ten's place 
       { 
        if ($num == 10) $retval.="ten"; 
        else if ($num == 11) $retval.="eleven"; 
        else if ($num == 12) $retval.="twelve"; 
        else if ($num == 13) $retval.="thirteen"; 
        else if ($num == 14) $retval.="fourteen"; 
        else if ($num == 15) $retval.="fifteen"; 
        else if ($num == 16) $retval.="sixteen"; 
        else if ($num == 17) $retval.="seventeen"; 
        else if ($num == 18) $retval.="eighteen"; 
        else if ($num == 19) $retval.="nineteen"; 
       } 
       else // if there's a different number in the ten's place 
       { 
        if ($mod == 2) $retval.="twenty "; 
        else if ($mod == 3) $retval.="thirty "; 
        else if ($mod == 4) $retval.="forty "; 
        else if ($mod == 5) $retval.="fifty "; 
        else if ($mod == 6) $retval.="sixty "; 
        else if ($mod == 7) $retval.="seventy "; 
        else if ($mod == 8) $retval.="eighty "; 
        else if ($mod == 9) $retval.="ninety "; 
        if (($num % 10) != 0) 
        { 
         $retval = rtrim($retval); //get rid of space at end 
         $retval .= "-"; 
        } 
        $retval.=readnumber($num % 10, 0); 
       } 
      } 

      if ($num != 0) 
      { 
       if ($depth == 3) 
        $retval.=" thousand\n"; 
       else if ($depth == 6) 
        $retval.=" million\n"; 
       if ($depth == 9) 
        $retval.=" billion\n"; 
      } 
      return $retval; 
     } 

    } 

    $objTest = new Test(); 

    $objTest->readnumber(120,0); 
    ?> 
+0

이상하게도 모든 것이 정상인 것처럼 보입니다 ... – Sarfraz

+0

물론입니다. 그러나 나는 그것이 어떤 문제인지 모른다. – Fero

+1

클래스의'readnumber' 함수도 사용하고 있습니다.'$ this-> readnumber' 대신에 이것을 시도하십시오. – Sarfraz

답변

3

로 입력을 제공하면서 라인 (20)에 \ 프로그램 파일 \ XAMPP \ htdocs를 \ numberToWords \ numberToWords.php : E에 (정의되지 않은 함수 readnumber에 전화) : 치명적인 오류 : 나는 치명적인 오류가 무엇입니까 클래스 자체에서 readnumber 함수를 사용하고 있는데, 대신이 위치를 사용하십시오. $this->readnumber

관련 문제