2010-10-08 33 views
1

我想有一个独特的排序函数的几个关联数组。PHP uksort()几个阵列

各种PHP排序函数中的最佳候选项是uksort()((usort()将是理想的,但它将数组键改为数字索引(!))。

例如(使用更简单的阵列)

function sorting_by_length_desc ($a, $b) 
    { 
    return strlen($GLOBALS['arr'][$b]) - strlen($GLOBALS['arr'][$a]); 
    } 

    $arr = ('chandler' => 'bing', 'monica' => 'lewinsky'); 

    uksort($arr, 'sorting_by_length_desc'); 

将使$arr

('monica' => 'lewinsky', 'chandler' => 'bing'); 

而不影响键。

那么如何在任何数组中使用相同的排序函数,uksort()在代码中的不同位置被调用?例如对于$arr1,$arr2,...,$arrn
是否有必要使用另一个具有数组名称的全局变量来分配给要排序的数组(在排序之前),并在排序函数中全局使用?

必须有其他更清洁的东西吧?

+0

它不应该是'monica'=>'geller''吗? ;) – codaddict 2010-10-08 06:08:12

+0

Oooooops !! ;-) – 2010-10-08 06:41:34

回答

1

你可以像一个普通的比较功能:

function sorting_by_length_desc ($a, $b) { 
     return strlen($b) - strlen($a); 
} 

而且uksort排序上的按键阵列。那是你在找什么?

如果您想对维护键值的数组进行排序,您可以使用值关联uasort

+0

由于某种原因,我完全错过了这个func! 'uasort()'正是我所需要解决的问题。谢谢。 – 2010-10-08 06:42:49