// Comparator function to sort strings as decimal numbers
function compareAsDecimal(string $a, string $b): int {
// Convert strings to float for comparison
$numA = floatval($a);
$numB = floatval($b);
return $numA <=> $numB; // Equivalent to Java's Double.compare
}
// Input array of strings
$numbers = ["12.3", "5.6", "789.1", "3.14", "456.0", "0", "0.01", "4.0"];
// Sort the array using the custom comparator
usort($numbers, 'compareAsDecimal');
echo "Sorted array of decimal strings:\n";
foreach ($numbers as $num) {
echo $num . " ";
}
/*
run:
Sorted array of decimal strings:
0 0.01 3.14 4.0 5.6 12.3 456.0 789.1
*/