簡體   English   中英

停止為PHP提供錯誤number_format

[英]Stop giving error number_format for PHP

這是問題:

$var = 1000;
$var2 = number_format($var,2);// No error

和;

$var = 'Some String';
$var2 = number_format($var,2);// Gives 'number_format() expects parameter 1 to be double.... error'

我的處理方法是;

$var = 'Some String';
$var_escape = 1000;
if(!$var2 = number_format($var,2)){
    $var2 = $var_escape;// if $var not a integer; always give 1000 to $var2.
}

該解決方案運行完美,但是; 仍然給出“ 期望參數錯誤 ”; 由於這一行:

if(!$ var2 = number_format($ var,2)){

我不想使用“ @ ”抑制。 這個問題還有其他解決方案嗎? 謝謝...

我的答案得到了解答

if(!is_numeric($var2 = $var)){$var2 = $var_escape;}

謝謝大家

您可以使用is_numeric函數檢查輸入的內容是否為數字

$var = 'Some String';
$var_escape = 1000;
if(is_numeric($var))
$var2=number_format($var,2);
else
$var2=$var_escape;

您可以簡單地預先聲明$var2為默認值,然后使用PHP中的內置is_numeric()函數檢查以確保$var傳入值是數字。 如果$var的傳入值確實是數字,則將該數字值分配給$var2 ,否則$var2將保留為默認值1000

$var2 = 1000;

if(is_numeric($var)){
  $var2 = number_format($var,2);
}

// You can proceed to use $var2 here as it will be 1000 or the value from $var if it was numeric.

使用正則表達式是最簡單的,這可以驗證它是整數還是浮點數。

$vars = array(
    'Some String',
    123,
    123.5,
    -11,
    "123.55",
    "$2!!",
    .1,
    1,
    ".1",
    "1"
);

foreach($vars as $var) {

    if(0 !== preg_match('/^-?\d*\.?\d*$/', $var)) {
        echo number_format($var, 2) . PHP_EOL;
    } else {
        echo $var . " -> " . 1000 . PHP_EOL;
    }
}

輸出

Some String -> 1000
123.00
123.50
-11.55
123.55
$2!! -> 1000
0.10
1.00
0.10
1.00

小心... 演示

采用:

if(is_float($var) || is_integer($var)){

代替:

if(is_numeric($var)){

除非您也希望處理數字字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM