我有一个像这样的数组
array(40) {
[134114]=>
array(5) {
["yeniPoz"]=>
int(3)
["yeniPuan"]=>
int(108)
["isim"]=>
string(16) "PERSON A"
["eskiPoz"]=>
string(1) "1"
["eskiPuan"]=>
string(3) "102"
}
[307674]=>
array(5) {
["yeniPoz"]=>
int(2)
["yeniPuan"]=>
int(83)
["isim"]=>
string(16) "PERSON B"
["eskiPoz"]=>
string(1) "2"
["eskiPuan"]=>
string(2) "75"
}
[263724]=>
array(5) {
["yeniPoz"]=>
int(10)
["yeniPuan"]=>
int(65)
["isim"]=>
string(9) "PERSON C"
["eskiPoz"]=>
string(1) "3"
["eskiPuan"]=>
string(2) "65"
}
[209310]=>
array(5) {
["yeniPoz"]=>
int(1)
["yeniPuan"]=>
int(72)
["isim"]=>
string(29) "PERSON D"
["eskiPoz"]=>
string(1) "4"
["eskiPuan"]=>
string(2) "62"
}
...
类(public $datas
)的此数组公共元素。
我想用 yeniPuan 订购这个数组。
function orderManagersFunc($a, $b)
{
return $b['yeniPuan'] - $a['yeniPuan'];
}
function orderManager()
{
uasort($this->datas, "orderManagersFunc");
}
结果应该是这样的:
但结果:
我认为它是由[“eskiPuan”]订购的。
但我不知道,为什么?
如果您需要所有代码,可以查看此代表:https://github.com/erayalakese/GPRO-live-standings
GLS.class.php文件中的类。我正在调用index.php中的函数
答案 0 :(得分:2)
您只需要替换以下行:
uasort($this->datas, "orderManagersFunc");
这个:
uasort($this->datas, array($this,"orderManagersFunc"));
因为这是正确的语法,表示您希望按类中的方法排序。
答案 1 :(得分:0)
查看array_multisort
我已经将它用于像你这样的多维数组。我必须首先使用循环遍历多维数组来构建我想要排序的值的数组。然后,您可以在array_multisort中使用该数组进行排序。像这样的东西。我认为usort
也可以使用
foreach($haystack as $key => $row){
$arrayOfValuesToSortBy[$key] = $row['keyToSortBy']];
}
array_multisort($arrayOfValuesToSortBy, SORT_ASC, SORT_STRING, $haystack);
答案 2 :(得分:0)
---编辑---
您需要使用:
uasort($this->datas, "GLS::orderManagersFunc");
OR(正如Nelson所建议的那样;也测试了一个......它也在起作用):
uasort($this->datas, array($this, "orderManagersFunc"));
“GLS :: orderManagersFunc”正确引用了用户订单功能,而不仅仅是“orderManagersFunc”(应该输出警告)。这就是为什么你的结果没有被'yeniPuan'订购并保持原样。