谁能解释一下,为什么我的排序不能正常工作


Can anyone explain, why my sorting doesn't work properly?

我想使用usort()函数按其值的长度排序数组。下面是我的函数:

$max_min_length = function ($a, $b) {
if (strlen($a) > strlen(b))
    return 1;
elseif (strlen($a) < strlen(b))
    return -1;
else
    return 0;
};
$array = ["abcd","abc","de","hjjj","g","wer"];
usort($array, $max_min_length);
print_r($array);

输出为:

Array ( [0] => g [1] => abcd [2] => abc [3] => hjjj [4] => de [5] => wer )

我不明白,为什么它不能正确排序。我错过什么了吗?我看过PHP:排序数组的值的长度?他们的解决方案很有效。我只是想知道,为什么会这样?

你把"b"打错了,没有"$"

将代码替换为

if (strlen($a) > strlen($b))
    return 1;
elseif (strlen($a) < strlen($b))
    return -1;
else
    return 0;
};

之后,你的代码将正常工作:)