<?php
function compareRomanNum($a, $b) {
if($a == $b) return 0;
$str = "0IVXLCDM";
$len = max($al = strlen($a), $bl = strlen($b));
$a .= str_repeat('0', max(0, $len-$al+1));
$b .= str_repeat('0', max(0, $len-$bl+1));
for($i = 0; $i < $len; $i++) {
$a1 = $a[$i]; $b1 = $b[$i]; $a2 = $a[$i+1]; $b2 = $b[$i+1];
if( strpos($str, $a1.$b1.$a2) ) return 1;
if( strpos($str, $b1.$a1.$b2) ) return -1;
if($a1 != $b1) return strpos($str, $a1) - strpos($str, $b1);
}
die(sprintf('unexpected roman numeral in (%s,%s)', $a, $b));
}
$a = array('MMV', 'MMX', 'MMIX');
print_r($a);
usort($a, 'compareRomanNum');
print_r($a);