2012-11-22 106 views
0

我怎麼能將它轉換成浮動,然後增加它,然後轉換回字符串。字符串浮動,反之亦然

if($set==$Data_Id) 
{ 
$rel='1.1.1.2'; 
} 

增量後它應該像1.1.1.3。

請任何幫助。

+2

「1.1.1.3」以何種方式表示單個浮點數?你有三個「積分」! –

+1

我能問一下你對1.1.1.9期望的行爲嗎? –

回答

0

「1.1.1.2」不是有效的數字。所以,你必須做這樣的事情:

$rel = '1.1.1.2'; 
$relPlusOne = increment($rel); 
function increment($number) { 
    $parts = explode('.', $number); 
    $parts[count($parts) - 1]++; 
    return implode('.', $parts); 
} 
+0

感謝和ai從你的代碼中得到了邏輯,我已經用我的代碼實現了,它工作正常 –

2

那麼瘋狂,它可能工作

$rel='1.1.1.2'; 
echo substr($rel, 0, -1). (substr($rel,-1)+1); //1.1.1.3 

最大的問題是你怎麼想發生,如果在字符串中結束? ?

0

如果這正是你需要解決的情況下,您可以用intval()strval()str_replace()substr()strlen()做到這一點。

$rel = '1.1.1.2'; // '1.1.1.2' 

// replace dots with empty strings 
$rel = str_replace('.', '', $rel); // '1112' 
// get the integer value 
$num = intval($rel); // 1112 
// add 1 
$num += 1; // 1113 

// convert it back to a string 
$str = strval($num); // '1113' 
// initialize the return value 
$ret = ''; 

// for each letter in $str 
for ($i=0; $i<strlen($str); $i++) { 
    echo "Current ret: $ret<br>"; 
    $ret .= $str[$i] . '.'; // append the current letter, then append a dot 
} 
$ret = substr($ret, 0, -1); // remove the last dot 

echo "Incremented value: " . $ret; 

但是,此方法將1.1.1.9更改爲1.1.2.0。如果這就是你想要的,那麼這將很好。

1

這是一個稍微不同的方法。

<?php 
function increment_revision($version) { 
    return preg_replace_callback('~[0-9]+$~', function($match) { 
     return ++$match[0]; 
    }, $version); 
} 

echo increment_revision('1.2.3.4'); //1.2.3.5 

Anthony。

相關問題