Ile pozitif bir önek artı PHP oturum nasıl

2 Cevap php

Ben değişmeden negatif sayıları dönmek için bir fonksiyon tasarım gerekiyor ama sayı eğer onun zaten hiç bugünkü başında bir + işaretini eklemek gerekir.

Örnek:

Input     Output
----------------
+1         +1
1          +1
-1         -1

Sadece sayısal girişi alacak.

function formatNum($num)
{
# something here..perhaps a regex?
}

Bu fonksiyon echo/print birkaç kez çağırdı olacak böylece hızlı iyidir.

Update:

Cevaplar için hepinize teşekkür ederim. Ben sprintf bazlı çözüm gerçekten hızlı söylemek gerekir.

2 Cevap

: Sen olarak regex kullanabilirsiniz

function formatNum($num){
    return preg_replace('/^(\d+)$/',"+$1",$num);
}

Ama ben not böyle önemsiz bir şey için regex kullanarak öneririm. Onun daha iyi sprintf Buradan faydalanmak için:

function formatNum($num){
    return sprintf("%+d",$num);
}

Dan PHP Manual for sprintf:

Bir dizi kullanılmak üzere - (veya +) bir işaret zorlar isteğe bağlı bir işaret belirteci. Varsayılan olarak, yalnızca - negatif ise sign bir dizi kullanılır. This specifier forces positive numbers to have the + sign attached yanı sıra, ve PHP 4.3.0 'da eklenmiştir.

@ Unicornaddict tarafından sağlanan sprintf çözüm çok güzel ve gitmek için muhtemelen en zarif yoludur. Sadece Zaten bir alternatif sunmak düşündüm. Değil onlar hızı ölçmek nasıl emin.

// Non float safe version
function formatNum($num) {
    return (abs($num) == $num ? '+' : '') . intval($num);
}

// Float safe version
function formatNum($num) {
    return 
        (abs($num) == $num ? '+' : '') 
        . (intval($num) == $num ? intval($num) : floatval($num));
}

// Float safe version, alternative
function formatNum($num) {
    return 
        (abs($num) == $num ? '+' : '') 
        // Add '1' to $num to implicitly cast it to a number
        . (is_float($num + 1) ? floatval($num) : intval($num));
}