In the context of PHP sorting functions, what is the significance of the cmp function and how should it be structured for proper array sorting?

When using PHP sorting functions like `usort`, the `cmp` function is used to define custom comparison logic for sorting arrays. This function should return a negative value if the first argument should be placed before the second, a positive value if the second argument should be placed before the first, and zero if they are equal. The `cmp` function should be structured to accept two arguments (elements of the array) and perform the necessary comparison logic.

// Example of sorting an array of numbers in ascending order using a custom cmp function
$numbers = [5, 2, 8, 1, 3];

function customCmp($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

usort($numbers, 'customCmp');

print_r($numbers);