2013-12-23 33 views
0

我錯或version_compare不支持比較具有不同「點」長度的字符串/數字嗎?在PHP中比較不同長度的版本

有沒有一種快速的方法來比較以下,而不是重新發明輪子?

version_compare(1.0, 1.0.0.0) => equal 
version_compare(1.0, 1.0.0.1) => right is higher 
version_compare(1.1, 1.0.0.1) => left is higher 

回答

0

我會這樣做;

function versionCompare($a, $b) { 

     $a = str_replace('.', '', $a); 
     $b = str_replace('.', '', $b); 

     $len = max(array(strlen($a), strlen($b))); 


     $a = (int) str_pad($a, $len, '0', STR_PAD_RIGHT); 
     $b = (int) str_pad($b, $len, '0', STR_PAD_RIGHT); 

     if ($a === $b) { 
      // Versions are equal 
     } elseif ($a > $b) { 
      // First version is higher 
     } else { 
      // Last version is higher 
     } 
    } 
+0

檢查我的編輯,忘在了'str_pad' :-)添加 – Help

+0

哈哈,做同樣的修改,但你的是更好,因爲它沒有硬編碼長度 – iamthereplicant

+0

高興它的幫助下,接受它,所以它可以幫助別人!聖誕節快樂。 – Help