2014-05-02 30 views
0

我已經有了這個函數,我想要格式化一個數字,例如,如果它是整數像79,該函數返回它爲79,000,000.00美元。 否則,如果它是79.5,則此函數返回$ 79,500,000.00。然而原函數工作正常,但作爲一種方法不再工作

function format_bolsa($number) 
{ 
    if(is_int($number)) 
    { 
     echo '<p style="color:#0B3B0B">I am an INT and the number/value before processing is: ',$number,'</p>'; 
     $number='$'.$number.',000,000.00'; 
     echo '<p style="color:#0B3B0B">I am an INT and now the formatted number is: ',$number,'</p>'; 
     return $number; 
    } 
    else if(is_float($number)) 
    { 
     echo '<p style="color:#0B3B0B">I am a FLOAT and the number/value before processing is: ',$number,'</p>'; 
     $number_tmp=explode('.',$number); 
     $number='$'.$number_tmp[0].','.$number_tmp[1].'00,000.00'; 
     echo '<p style="color:#0B3B0B">I am a FLOAT and now the formatted number is: ',$number,'</p>'; 
     return $number; 
    } 
    echo '<p style="color:#610B0B">Nothing has been done. The number is: ',$bolsa,' but such a value will not be returned!</p>'; 
} 

$number=79; 

$number=format_bolsa($number); 

echo $number; 

,當我將其插入這樣一個類中(成爲法):

的功能在以下和它的正常工作,你可以在http://www.compileonline.com/execute_php_online.php測試

public function format_bolsa($number) 
{ 
    if(is_int($number)) 
    { 
     echo '<p style="color:#0B3B0B">I am an INT and the number/value before processing is: ',$number,'</p>'; 
     $number='$'.$number.',000,000.00'; 
     echo '<p style="color:#0B3B0B">I am an INT and now the formatted number is: ',$number,'</p>'; 
     return $number; 
    } 
    else if(is_float($number)) 
    { 
     echo '<p style="color:#0B3B0B">I am a FLOAT and the number/value before processing is: ',$number,'</p>'; 
     $number_tmp=explode('.',$number); 
     $number='$'.$number_tmp[0].','.$number_tmp[1].'00,000.00'; 
     echo '<p style="color:#0B3B0B">I am a FLOAT and now the formatted number is: ',$number,'</p>'; 
     return $number; 
    } 
    echo '<p style="color:#610B0B">Nothing has been done. The number is: ',$number,' but such a value will not be returned!</p>'; 
} 

現在方法不能正常工作,我得到我的自定義消息

什麼也沒有做東北。數字是:',$ number',但是這樣的值將不會被退回 !

我所說的方法是這樣的:

$number=self::format_bolsa($number); 

我不知道爲什麼它不工作。我插入了這樣的其他功能,現在他們正在以正確的方式工作。

任何人都可以擺脫一些光?

+0

因爲它不是一個靜態函數,所以它應該被稱爲'$ this-> format_bolsa($ number)'。或者你應該聲明它是一個靜態函數。 – Barmar

+0

另外,你在哪裏設置'$ bolsa'? – Barmar

+0

編輯:是的,它是$數字。不是$ bolsa。我試圖用靜態...它沒有工作:( – Pathros

回答

1

爲什麼不簡單使用number_format

echo number_format(79 * 1000000, 2); 
echo number_format(79.5 * 1000000, 2); 

Else..here是一個工作示例,以幫助您與您的靜態方法:

class Test 
{ 
    public static function format_bolsa($number) 
    { 
     if (is_int($number)) { 
      echo 'I\'m an int'; 
     } 
     else if (is_float($number)) { 
      echo 'I\'m a float'; 
     } 
    } 
} 

Test::format_bolsa(79); 
Test::format_bolsa(79.5); 
與number_format

現在:

class Test 
{ 
    public static function format_bolsa($number) 
    { 
     return number_format($number * 1000000, 2) 
    } 
} 

而且瞭解爲什麼靜態方法並不好: static considered harmful

+0

哦,是啊!那就是訣竅!☺太簡單了!!!!謝謝! – Pathros

1

您應該打電話給:

$number=$this->format_bolsa($number); 
相關問題