2013-03-07 4 views
1

내 호스트가 PHP 버전을 5.2에서 5.3으로 업데이트했습니다 (5.2 버전으로 돌아갈 수 없음) 그리고 내 사이트에 다음과 같은 경고 오류가 하나 있습니다 : - > 여기PHP 5.2에서 PHP 5.3 버전으로 수정하기 버전

Warning: number_format() expects parameter 2 to be long, string given in /currency.php on line 77 

은 파일의 코드입니다 :

<?php 
defined('_JEXEC') or die('Restricted access'); 
class GCurrency 
{ 
var $_symbol=null; 
var $_value=null; 
var $_currency=null; 
var $_decimal_separator=null; 
var $_decimals=null; 
var $_val_separator=null; 
var $_format=null; 
function __construct($val=0,$symbol='$',$currency='USD',$format="%S %V %C",$decimal="2",$dec=".",$v=",") 
{ 
    $this->_symbol=empty($symbol)?'$':$symbol; 
    $this->_currency=empty($currency)?"USD":$currency; 
    $this->_value=$val; 
    $this->_decimal_separator=empty($dec)?".":$dec; 
    $this->_decimals=empty($decimal)?"2":$decimal; 
    $this->_val_separator=empty($val)?",":$v; 
    $this->_format=empty($format)?"%S %V %C":$format; 
} 
function setCurrencySymbol($symbol='$') 
{ 
    $this->_symbol=$symbol; 
} 
function setDecimals($dec="2") 
{ 
    $this->_decimals=$dec; 
} 
function setCurrency($currency="USD") 
{ 
    $this->_currency=$currency; 
} 
function setValue($val=0,$symbol='$',$currency='USD') 
{ 
    $this->_symbol=empty($symbol)?'$':$symbol; 
    $this->_currency=empty($currency)?"USD":$currency; 
    $this->_value=$val; 
} 
function setDecimalSeparator($dec=".") 
{ 
    $this->_decimal_separator=$dec; 
} 
function setValueSeparator($val=",") 
{ 
    $this->_val_separator=$val; 
} 
function setFormat($format="%S %V %C") 
{ 
    $this->_format=$format; 
} 
function set($val=0,$symbol='$',$currency='USD',$format="%S %V %C",$decimal="2",$dec=".",$v=",") 
{ 
    $this->_symbol=empty($symbol)?'$':$symbol; 
    $this->_currency=empty($currency)?"USD":$currency; 
    $this->_value=$val; 
    $this->_decimal_separator=empty($dec)?".":$dec; 
    $this->_decimals=empty($decimal)?"2":$decimal; 
    $this->_val_separator=empty($val)?",":$v; 
    $this->_format=empty($format)?"%S %V %C":$format; 
} 
function setParameters($format="%S %V %C",$decimal="2",$dec=".",$v=",") 
{ 
    $this->_decimal_separator=empty($dec)?".":$dec; 
    $this->_decimals=empty($decimal)?"2":$decimal; 
    $this->_val_separator=empty($val)?",":$v; 
    $this->_format=empty($format)?"%S %V %C":$format; 
} 
function toString() 
{ 
    $pattern=array(); 
    $pattern[]='/%S/i'; 
    $pattern[]='/%V/i'; 
    $pattern[]='/%C/i'; 
    $value=array(); 
    /*$value[]=$this->_symbol;*/ 
    $value[]=number_format($this->_value,$this->_decimals,$this->_decimal_separator,$this->_val_separator); 
    $value[]=$this->_currency;  
    return preg_replace($pattern,$value,$this->_format); 
} 
} 
?> 

누군가가 나에게 아이디어를 줄시겠습니까이 제발 고정 할 수있는 방법?

+0

오류 메시지는 매우 자명합니다. 'number_format'에 문자열을 전달하지 말고 숫자를 전달하십시오. –

답변

1

$this->_decimals을 문자열이 아닌 숫자로 지정하십시오. 그래서 정수로 캐스팅하면 경고 메시지가 사라집니다. 오류가 말한대로

http://php.net/manual/en/function.number-format.php

+0

링크를 주셔서 감사합니다. 문제가 해결되었습니다. –

0

, 그것은 긴 것으로 기대하고있다. 어쨌든 PHP는 long으로 변환됩니다. 그러나 모든 3 진 문에서 문자열에 $ this_decimals를 설정하고 있습니다. 예를 들어 "2"의 값을 래핑하는 큰 따옴표에 유의하십시오.

+0

도움을 주셔서 감사합니다. "Schleis"라는 링크로 문제가 해결되었습니다. 고맙습니다 –