2011-12-31 23 views
13

Sürümleri sıralamak için 2.4 veya 2.4.0.9 vb. Gibi sürüm belirteçlerini işlemek için doğru yol nedir.Sürüm bilgisi nasıl sıralanır

PHP, 1.3.4 geçerli bir tam sayı değil, aynı zamanda geçerli olmayan bir sayı değil diyor.

array('2.4','2.3.4','2.4.0.9') 

cevap

33

PHP bir version_compare işlevi vardır. Sıralamak için usort kullanın. Takip gibi. :)

$a = array('2.4','2.3.4','2.4.0.9'); 
usort($a, 'version_compare'); 
2

bir dize sen version_compare() fonksiyonun kullanmasını sağlıyor olarak saklanması:

$versions = array('2.4','2.3.4','2.4.0.9'); 
usort($versions, 'version_compare'); 
+2

Ben Senden önce 'usort' versiyonunu blogpost düşünüyorum. Daha sonra düzenlediniz. : P –

4

Ya da, sadece natsort kullanın:

$array = array('2.4','2.16.6','2.3.4','2.4.0.9'); 
natsort($array); 
print_r($array); 

#Array ([2] => 2.3.4 [0] => 2.4 [3] => 2.4.0.9 [1] => 2.16.6) 
+0

'natsort', sürümleri' -RC1' veya diğer sayısal olmayan veriler içeriyorsa kötü bir seçimdir: version_compare, kararlı sürümlerden önce RC sürümlerini koyar (örn .: "Twig-1.0.0-RC1", "Twig- "Netsort" yanlış bir "Twig-1.0.0", "Twig-1.0.0-RC1", "Twig-1.0.0-RC2" döndürecek olan 1.0.0-RC2 "," Twig-1.0.0 ") –