What's the right way, to handle versioning indicators like 2.4
or 2.4.0.9
etc. to get the ability of sorting versions.
PHP says, that 1.3.4
is not a valid integer, but also a non-valid number.
array('2.4','2.3.4','2.4.0.9')
If you find yourself having to sort using semantic version strings, (sorting a list of releases chronologically, say), we first need to split the string into its values and then compare each value. In this case we would sort by major release first, then minor, then finally by patch number.
Semantic versioning is a formal convention for determining the version number of new software releases. The standard helps software users to understand the severity of changes in each new distribution. A project that uses semantic versioning will advertise a Major, Minor and Patch number for each release.
Compare two version numbers version1 and version2. If version1 > version2 return 1; if version1 < version2 return -1; otherwise return . You may assume that the version strings are non-empty and contain only digits and the . character.
PHP has a version_compare function. Use usort to sort it. Like following. :)
$a = array('2.4','2.3.4','2.4.0.9');
usort($a, 'version_compare');
Or, just use natsort:
$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 )
Storing it as a string allows you to make use of the version_compare()
function:
$versions = array('2.4','2.3.4','2.4.0.9');
usort($versions, 'version_compare');
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With