Php 与usort的轻微问题

Php 与usort的轻微问题,php,arrays,sorting,multidimensional-array,usort,Php,Arrays,Sorting,Multidimensional Array,Usort,让我的阵列正确地通过Distance进行排序有一个小问题。我认为使用usort可以达到目的,但我显然弄错了 乌斯波特 $return产生: Array ( [0] => Array ( [ZipCode] => 06096 [Distance] => 0 ) [1] => Array ( [ZipCode] => 06096 [Distance] => 0 )

让我的阵列正确地通过
Distance
进行排序有一个小问题。我认为使用usort可以达到目的,但我显然弄错了

乌斯波特
$return
产生:

Array
(
[0] => Array
    (
        [ZipCode] => 06096
        [Distance] => 0
    )

[1] => Array
    (
        [ZipCode] => 06096
        [Distance] => 0
    )

[2] => Array
    (
        [ZipCode] => 06026
        [Distance] => 3.16
    )

[3] => Array
    (
        [ZipCode] => 06080
        [Distance] => 4.14
    )

[4] => Array
    (
        [ZipCode] => 06080
        [Distance] => 4.14
    )

[5] => Array
    (
        [ZipCode] => 06078
        [Distance] => 4.14
    )

[6] => Array
    (
        [ZipCode] => 06064
        [Distance] => 3.6
    )

[7] => Array
    (
        [ZipCode] => 06028
        [Distance] => 3.6
    )

[8] => Array
    (
        [ZipCode] => 06028
        [Distance] => 3.6
    )

[9] => Array
    (
        [ZipCode] => 06006
        [Distance] => 4.83
    )

[10] => Array
    (
        [ZipCode] => 06095
        [Distance] => 4.83
    )

[11] => Array
    (
        [ZipCode] => 06095
        [Distance] => 4.83
    )

[12] => Array
    (
        [ZipCode] => 06006
        [Distance] => 4.83
    )

)

您使用
strotime
距离的原因是什么

这应该起作用:

usort($return, function($a, $b){
    return $a['Distance'] - $b['Distance'];
}); 
编辑:

好的,我知道问题出在哪里了,如中所述:

从比较函数返回非整数值,例如float,将导致回调返回值的内部转换为整数。因此,0.99和0.1等值都将转换为0的整数值,这将比较这些值是否相等

因此,解决方案是确保比较函数始终返回一个整数:

usort($return, function($a, $b){
    $t1 = $a['Distance'];
    $t2 = $b['Distance'];
    if ($t1 == $t2) return 0;
    return $t1 < $t2 ? -1 : 1;
}); 
usort($return,function($a,$b){
$t1=$a[‘距离’];
$t2=$b[‘距离’];
如果($t1=$t2)返回0;
返回$t1<$t2?-1:1;
}); 

@o7thWebDesign,这可能是另一个问题,我刚刚尝试了这段代码,它应该可以工作。你能把包括数据在内的完整代码贴出来吗?我不能给你数据。这是我从USPS导入MySQL的CSV转储。我给你们举了一个上面返回数据的例子。完整代码只返回上面完全未排序的数组。在usort中添加命令在一定程度上。。。只是不完全:@o7thWebDesign,好吧,我知道问题出在哪里了,我已经更新了答案。
usort($return, function($a, $b){
    $t1 = $a['Distance'];
    $t2 = $b['Distance'];
    if ($t1 == $t2) return 0;
    return $t1 < $t2 ? -1 : 1;
});