【发布时间】:2015-09-19 22:10:40
【问题描述】:
如果在 PHP 中有一个相当基本的 uasort 函数,看起来像这样:
uasort($arr, function($a, $b) {
if ($a > $b)
return -1;
if ($a < $b)
return 1;
...
}
我尝试排序的数组如下所示:
{[1642] => 1, [9314] => 4, [1634] => 3 ...}
它包含作为我主要比较标准的整数。但是,如果整数相等,那么我想在 uasort 函数中访问它们的键值,并用它做一些魔术以从那里找出排序。
我不知道该怎么做,因为似乎传递给函数的 $a 和 $b 变量只是没有相应键的整数,但也应该有一种访问键的方法因为我正在使用一个函数来实际保留密钥。有什么想法吗?
【问题讨论】:
-
我们在这里谈论的是什么魔法?可能还有其他方法可以做到这一点。
-
应用程序的“魔法”或逻辑非常混乱,因为如果整数相等,它会涉及特殊的数据库查询。幸运的是,大多数时候它们不是,我可以想到一种解决方法,例如,通过创建另一个二维数组,将整数作为一个值,将键作为另一个值,然后将其提供给 uasort。不过,我希望有更好、更简单的方法来做到这一点。