- preg_replace_callback: documentation ( source)
- array_multisort: documentation ( source)
- var_export: documentation ( source)
<?php
$array = [
'18 1/2"',
'18"',
'4"',
'18 11/12"',
'18 1/4"'
];
$asDecimal = preg_replace_callback(
'/(\d+)(?: (\d+)\/(\d+))?"/',
function ($m) {
return $m[1] . (isset($m[3]) ? $m[2] / $m[3] : '');
},
$array
);
var_export($asDecimal);
echo "\n";
array_multisort($asDecimal, SORT_NUMERIC, $array);
var_export($array);