2016-11-27 116 views
0

我有一个对象实例数组,我需要根据对象返回的函数对它们进行排序。按对象变量排序对象数组,键被替换

所以基本上我的对象有2个变量,函数将它们加在一起,然后返回结果,对象列表需要根据这个排序。

我的排序代码:

function cmp($a, $b) 
{ 
    if ($a->calcPoints() == $b->calcPoints()) { 
    return 0; 
    } 
    return ($a->calcPoints() > $b->calcPoints()) ? -1 : 1; 
} 
usort($teamData, "cmp"); 

如果不使用usort功能倾倒我的数组时,我得到如下:

键: “赫尔城FC” 价值: { “赢”: 3,“draw”:2,“loss”:8,“goalFor”:11,“goalConc”:28}键:“Leicester City FC”价值:{“win”:3,“draw”:4,损失“:6,”goalFor“:16,”goalConc“:22}

一旦我用了usort功能,我的钥匙被替换,像​​这样:

键:0值:{ “赢”:10, “画”:1, “损失”:2, “goalFor”: 29, “goalConc”:10} 键:1个值:{ “赢”:9, “画”:3, “损失”:1, “goalFor”:29, “goalConc”:12}

我该如何解决这个问题?

+0

您是否尝试使用[uasort](http://php.net/手动/ EN/function.uasort.php)? – segFault

回答

2

如果您在手册中查找usort(),你会发现:

注:此功能分配新的键在数组中的元素。它将删除任何可能已经分配的现有密钥,而不是仅对密钥重新排序的 。

uasort()但是,将:“用一个用户定义的比较函数对数组进行排序并保持索引关联”。继续尝试,这应该是你要找的。

+0

我错过了那部分,谢谢 –

1

您应该使用uasort函数而不是usort。根据PHP documentation

uasort - 按与用户定义的比较函数和 保持索引关系数组